Bonsoir Ducrocq, Éric, bonsoir le forum,
Une proposition VBA :
Sub Macro1()
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim TC1 As Variant ' déclare la variable TC1 (Tableau de Cellules 1)
Dim TC2 As Variant ' déclare la variable TC2 (Tableau de Cellules 2)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O2 = Sheets("Rapport1") 'définit l'onglet O2
TC1 = O1.Range("A1").CurrentRegion 'définit le tableau de cellules TC1
TC2 = O2.Range("A1").CurrentRegion 'définit le tableau de cellules TC2
For I = 2 To UBound(TC1, 1) 'boucle 1 : sur toutes les lignes I du tableau de cellules TC1 (en partant de la seconde)
For J = 2 To UBound(TC2, 1) 'boucle 2 : sur toutes les lignes J du tableau de cellules TC2 (en partant de la seconde)
'condition 1 : si la valeur ligne I colonne 1 de TC1 est égale à la valeur ligne J colonne 1 de TC2
If CStr(TC1(I, 1)) = CStr(TC2(J, 1)) Then
'condition 2 : si la valeur ligne I colonne 2 de TC1 sans les espaces
'est contenue dans la valeur ligne J colonne 3 sans les espaces
If InStr(1, CStr(Replace(TC2(J, 3), " ", "")), CStr(Replace(TC1(I, 2), " ", ""))) > 0 Then
'récupère dans la ligne I colonne 3 de TC1 la valeur sous forme de texte de la ligne J colonne 2 de TC2
TC1(I, 3) = "'" & CStr(TC2(J, 2))
Exit For 'sort de la boucle 2
End If 'fin de la condition 2
End If 'fin de la condition 1
Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
'renvoie dans la cellule C1 (redimensionnée) de l'onglet O1 la troisième colonne du tabelau TC1
O1.Cells(1, 3).Resize(UBound(TC1, 1), 1) = Application.Index(TC1, , 3)
End Sub
Je crains Éric, que la formule ne fonctionne pas sur les références en doublons...