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
| Sub dispatch()
'donc, ci-dessous on déclare explicitement les variables (très important)
'Dcol1,Dcol2 pour repérer les dernières colonnes, appelles-les comme tu veux, en long ou integer
'voir la différence avec l'aide (F1)
Dim Dcol1 As Long, Dcol2 As Long, x As Long, y As Long
'Dl comme ci-dessus mais pour dernière cellule, Ws1, Ws2 variables objet représentant une feuille
Dim Dl As Long, Ws1 As Worksheet, Ws2 As Worksheet, Tb
'ci-dessous Ws1 représentera la feuille "Données à dispatcher"
Set Ws1 = Sheets("Données à dispatcher")
'et Ws2.., tu as compris
Set Ws2 = Sheets("fichier final")
With Ws1 'afin de ne pas répêter Ws sans arrêt, voir l'aide pour With
Dcol1 = .Range("IV1").End(xlToLeft).Column 'donc Dcol1 représente dern. col. (renseignée) de "Données à dispatcher"
End With 'fin du With
With Ws2
Dcol2 = .Range("IV1").End(xlToLeft).Column 'là tu comprends maintenant
End With
For x = 1 To Dcol1 'une boucle qui va de la prem. col. à la dern. de "Données à dispatcher"
For y = 1 To Dcol2 'une boucle (imbriquée) qui va de la prem. col. à la dern. de "fichier final"
With Ws1 'Ws1 représente (tu l'as vu) la feuille "Données à dispatcher"
'ci-dessous, on met une condition, la première => si cellule A1 en "Données à dispatcher" = A1 en "fichier final"
'la 2ème => si cellule A1 en "Données à dispatcher" = B1 en "fichier final"
'on parcoure donc les col de "Fichier final" pour comparer à A1 de l'autre
If .Cells(1, x) = Ws2.Cells(1, y) Then
'ci-dessous Dl représente dern. cellule de 1ère col identique
'voir définition de split avec l'aide
Dl = .Range(Split(.Cells(1, x).Address, "$")(1) & .Rows.Count).End(xlUp).Row
'ci-dessous une variable tableau qui reprend les données de la col.
Tb = .Range(.Cells(2, x), .Cells(Dl, x))
'et on affecte le tableau depuis la 2ème cellule à la dernière cellule
'voir définition de resize et ubound avec l'aide
Ws2.Cells(2, y).Resize(UBound(Tb, 1)) = Tb
End If
End With
Next y
'ci-dessous pour comparer à A2 de l'autre, etc.
Next x
End Sub |
Partager