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
| Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim LD As Variant 'déclare la variable LD (Liste sans Doublon)
Dim K As Integer 'déclare la variable K (incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim TF() As Variant 'déclare la variable TF (Tableau Final)
Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
TC = O.Range("A1").CurrentRegion 'définit le tableau de celllule TC (à dapater)
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 1 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC
D(TC(I, 1)) = "" 'alimente le dictionnaire D
Next I 'prochaine ligne de la boucle
LD = D.keys 'récupère dans la tableau LS la liste des éléments sans doublon
K = 1 'initialise la variable K
For J = 0 To UBound(LD, 1) 'boucle 1 : sur tous les éléments de la liste LD
For I = 1 To UBound(TC, 1) 'boucle 2 sur toutes les lignes du tabelau TC
If LD(J) = TC(I, 1) Then 'condition : si l'élément de la liste LD est égal à la valeur en colonne A du tableau TC
ReDim Preserve TF(1 To 2, 1 To K) 'redimensionne le tableau final TF
TF(1, K) = TC(I, 1) 'récupère le code dans la première ligne de TF
'récupère la ou les adresses dans la seconde ligne de TF
TF(2, K) = IIf(TF(2, K) = "", TC(I, 2), TF(2, K) & "," & TC(I, 2))
End If 'fin de la condition
Next I 'prochaine ligne du tableau TC
K = K + 1 'incrémente K (pour passer au code suivant)
Next J 'prochain élément de la liste LD
O.Cells.Cells.ClearContents 'efface le contenu de l'onglet O
'transpoe dans A1 de l'onglet O le tableau TF
O.Range("A1").Resize(UBound(TF, 2), UBound(TF, 1)) = Application.Transpose(TF)
End Sub |
Partager