J'ai une quantité de text dans la colonne C et je n'ai qu'à extraire une partie. Je peux le faire dans Excel, mais je le souhaite dans VBA. Voici comment je le fais en Excel
=MID(C2,FIND("IAV",C2)+6,11)
Voici un extrait de l'information dans 3 cellules (brisé par les lignes):
CVE: CVE-2013-3378
BID: 60681
Crossref: OSVDB # 94438, IAVA # 2013-A-0126
Vulnérabilité Date de publication: 2013/06/19
Patch Date de publication: 2013/06/19
Plugin Date de publication: 2013/07/24
CPE: cpe: / o: microsoft: windows cpe: / a: microsoft: silverlight
CVE: CVE-2013-3896
BID: 62793
Crossref: OSVDB # 98223, MSFT # MS13-087, IAVB # 2013-B-0117
Vulnérabilité Date de publication: 2013/10/08
Patch Date de publication: 2013/10/08
BID: 25628
Crossref: OSVDB # 34600, OSVDB # 43371, IAVT # 2008-T-0046, CWE # 20
Vulnérabilité Date de publication: 2007/09/05
Patch Date de publication: 2007/09/05
Plugin Date de publication: 2011/10/04
Mon objective est d'extraire tout ce qui suit IAVA #, IAVB # et IAVT #. Je ne me laisse qu'avec 2013-A-0126 2013-B-0117 2008-T-0046
J'ai sortingché et supposé que je pourrais chercher "IAV" et append 6 caractères pour find le début de la string. En outre, le numéro de colonne est défini comme une variable.
Sub Test() Dim ColNumber As Integer ColNumber = 3 'Set the column you wish to run on Worksheets("Sheet1").Activate LastCell = Cells(Worksheets("Sheet1").Rows.Count, ColNumber).End(xlUp).Row For TheRow = 1 To LastCell Worksheets("Sheet1").Cells(TheRow, ColNumber + 1).Value = Mid(Worksheets("Sheet1").Cells(TheRow, ColNumber).Value, InStr(Worksheets("Sheet1").Cells(TheRow, ColNumber).Value, "IAV") + 6, 11) Next End Sub
=MID(C2,FIND("IAV",C2)+6,11)
MID rest le même dans VB, FIND devient InStr, donc cette formule se traduit par:
SsortingngVariable = Mid([C2],InStr([C2],"IAV") + 6, 11)
Pour écrire les réponses dans la colonne D, pour chaque cellule dans la colonne C …
Option Explicit Sub WriteData() Dim RowNum as Long Dim LastRow as Long Dim DataSsortingng as Ssortingng LastRow = Range("C1").End(xldown).Row For RowNum=2 to LastRow DataSsortingng= Cells(RowNum,3) ' 3 = C Cells(RowNum,4)=Mid(DataSsortingng,InStr(DataSsortingng,"IAV") + 6, 11) Next RowNum End Sub