Sub ChercheCode3()
Dim Tab1() As Variant 'déclaration tablo vba
Dim Tab2() As Variant
Offset = 6 'pour compenser le démarrage du tableau à la ligne 7
With Sheets("Feuil1") 'avec la feuille1
LastLine = .Range("C" & .Rows.Count).End(xlUp).Row 'dernière ligne NON vide de la colonne C
Tab1 = .Range("G7:G" & LastLine).Value 'on met la colonne G dans le tablo
End With
With Sheets("Feuil2") 'avec la feuille2
LastLine = .Range("E" & .Rows.Count).End(xlUp).Row 'dernière ligne NON vide de la colonne E
Tab2 = .Range("D9:E" & LastLine).Value 'on met les colonne D et E dans le tablo
End With
Set dico1 = CreateObject("Scripting.Dictionary") 'création d'un dictionaire
For i = LBound(Tab1, 1) To UBound(Tab1, 1) 'pour chaque ligne du tablo
If Tab1(i, 1) <> "" And InStr(Tab1(i, 1), " ") <> 0 Then 'si NON vide ET contient un espace
Clé = SupEspace(CStr(Tab1(i, 1))) 'on récupère la partie numérique pour en faire la clé If Clé <> "" And IsNumeric(Clé) Then 'si clé non vide et la partie numérique est JUSTE un nombre (pas de lettre)
If Not dico1.exists(Clé) Then 'si la clé n'existe pas
dico1.Add Clé, i 'on ajoute la clé avec son indice
End If
End If
Next i
For i = LBound(Tab2, 1) To UBound(Tab2, 1) 'pour chaque ligne
If dico1.exists(CStr(Tab2(i, 2))) Then 'si la clé existe
Tab2(i, 1) = dico1(CStr(Tab2(i, 2))) + Offset 'on met sa valeur (indice) + offset
End If
Next i
Sheets("Feuil2").Range("D9:E" & LastLine).Value = Tab2 'on copie le résultat dans la feuille
End Sub
Function SupEspace(ValInit As String) As String
tempo = ""
For i = 1 To Len(ValInit)
Carac = Mid(ValInit, i, 1)
If IsNumeric(Carac) Then
tempo = tempo & Carac
End If
Next i
SupEspace = tempo
End Function