Bonsoir Jess, bonsoir le forum,
Peut-être comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TA As Variant 'déclare la variable TA (Tableau de la colonne A)
Dim TG As Variant 'déclare la variable TG (Tableau de la colonne G)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim PL As Range 'déclare la variable PL (PLage)
Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TA = O.Range("A1:A" & O.Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit le tableau de cellules TA
TG = O.Range("G1:G" & O.Cells(Application.Rows.Count, 7).End(xlUp).Row) 'définit le tableau de cellules TG
Set PL = O.Range("B1") 'initialise la plage PL
For I = 1 To UBound(TG, 1) 'boucle 1 : sur toutes les lignes I du tableau TG
For J = 1 To UBound(TA, 1) 'boucle 2 : sur toutes les lignes J du tableau TA
If TA(J, 1) = TG(I, 1) Then 'condition si la valeur ligne J de TA est égale à la valeur ligne I de TG
'redéfinit la plage PL (la cellule ligne J colonne 1 (=A) si l'adresse de PL est B1,
'sinon la plage PL et la cellule ligne J colonne 1 (=A)
Set PL = IIf(PL.Address = "$B$1", O.Cells(J, 1), Application.Union(PL, O.Cells(J, 1)))
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
PL.Delete xlShiftUp 'efface la plage PL
End Sub