[VBA-EXCEL] Comparaison de 2 tables Excels
Bonjour,
Je suis un nouveau de VBA, je dois développer un macro qui compare l'idedifiant d'une première table avec l'identifiant de 2e, si ce identifiant existe dans le 2e (en utilisant la fonction find), il le garde, sinon, il le supprime.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Dim wb As Workbook, wb2 As Workbook, ws As Worksheet
'Le premier fichier en entrée ici est un fichier csv dont le chemin est situé à range(F5), je le parse par ";" pour créer une collection
Dim V As Collection
Path = ThisWorkbook.Sheets("sheet1").Range("F5").Value
Set V = ParseFile(Path, ";")
'Je mets tous les morceaux de la collection dans les sheets de workbook
If V.Count > 40 Then
t = 1
For i = 1 To 40
ThisWorkbook.Sheets("sheet2").Range("A" & t).Resize(1, 17).Value = V.Item(i)
t = t + 1
Next i
t = 1
For i = 40 To V.Count
ThisWorkbook.Sheets("sheet3").Range("A" & t).Resize(1, 17).Value = V.Item(i)
t = t + 1
If i + 1 = 2 * 40 Then Exit For
Next i
Else
t = 1
For i = 1 To V.Count
ThisWorkbook.Sheets("sheet2").Range("A" & t).Resize(1, 17).Value = V.Item(i)
t = t + 1
Next i
End If
'j'ouvre la 2e table Excel dont le chemin est dans range(F6), je fais un filtre là-dessus
Workbooks.Open Filename:=ThisWorkbook.Sheets("sheet1").Range("F6").Value
Set wb2 = ActiveWorkbook
Sheets("POSITION AND GRECS").Activate
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="DESCRIPT"
Rows("3:3").Select
Range("B3").Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets.Add
Set sh = ActiveSheet
ActiveSheet.Paste
'Maintenant, je compare les 2 par un for sur la 1ere table, et faire un find sur la 2e pour voir si ça existe ou pas, si oui, on le garde, sinon, je le supprime.
ThisWorkbook.Activate
For i = 1 To Range("A1").End(xlDown).Row
Id = Range("A" & i).Value
If wb2.Sheets("sheet1").Range("AA:AA").Find(Id) Is Nothing Then
Rows(i).Delete
i = i - 1
End If
Next i
ThisWorkbook.SaveAs Filename:="G:\_Traitements_Exo\Users\Jun\a.xls" |
'le problème est qu'il se bloque sur la ligne "i=i-1" que j'ai besoin de faire quand une ligne est supprimée.
Merci de m'aider si vous comprenez ce que j'ai fait de mal dans ce code.:?
Je suppose que je parcours peut-être dans la mauvaise sheet pour comparer??