Sub Macro1()
Dim oo As Object 'déclare la variable oo (Onglet Origine)
Dim dlo As Long 'déclare la variable dlo (Dernière Ligne onglet Origine)
Dim plo As Range 'déclare la variable plo (PLage onglet Origine)
Dim ore As Object 'déclare la variable ore (Onglet de REcherche)
Dim dlre As Long 'déclare la variable dlre (Dernière Ligne onglet REcherche)
Dim plre As Range 'déclare la variable plre (PLage onglet REcherche)
Dim co As Range 'déclare la variable co (Cellules onglet Origine)
Dim cre As Range 'déclare la variable cre (Cellules onglet REcherche)
Dim tc As String 'déclare la variable tc (Texte Concatené)
Set oo = Sheets("BDD_PWO") 'définit l'onglet d'origine oo
dlo = oo.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée dlo de la colonne 2 (=B)
Set plo = oo.Range("B2:B" & dlo) 'définit la plage d'origine plo
Set ore = Sheets("MOP") 'définit l'onglet de recherche ore
dlre = ore.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dlre de la colonne 1 (=A)
Set plre = ore.Range("A2:A" & dlre) 'définit la plage de recherche
For Each co In plo 'boucles 1 : sur toutes les cellules d'origine co de la palge plo
ore.Range("A1").AutoFilter Field:=1, Criteria1:=co.Value 'filtre la colonne 1 (=A) de l'onglet de recherche ore para rapport à la valeur de la cellule co
If ore.Cells.SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then 'condition : si le nombre le lignes visibles est supérieur à 1
For Each cre In plre.SpecialCells(xlCellTypeVisible).Offset(0, 4) 'boucle 2 : sur toutes les cellule visibles cre de la plage plre décalée de 4 colonnes à droite (=colonne E)
tc = tc & cre.Value 'd'éfinit le texte concatené tc
Next cre 'prochaine cellule de la boucle 2
co.Offset(0, 19).Value = tc 'renvoie en colonne U de l'onglet d'origine la valeur de tc
tc = "" 'vide tc
End If 'fin de la condition
ore.Range("A1").AutoFilter 'supprime le filtre automatique
Next co 'prochaine cellule de la boucle 1
End Sub