VBA Excel – Extrayez datatables de la colonne C et placez-la dans la colonne D

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