Le code qui suit devrait le faire (avec ou sans espace) :
VB:
Function Ville(ByVal xID, xRecherche)
Dim t, ref, i&
t = xRecherche.Value: xID = Mid(Replace(xID, " ", ""), 4)
ref = Val(Left(xID, Len(xID) - 3))
For i = 1 To UBound(t)
If ref = t(i, 1) Then Ville = t(i, 2): Exit Function
Next i
End Function
Cliquez sur le bouton Hop !
Le code dans module1 :
VB:
Sub Macro()
With Sheets("Feuil1").ListObjects("Tableau24").DataBodyRange.Columns(2)
.FormulaR1C1 = "=VLOOKUP(VALUE(LEFT(SUBSTITUTE(MID([@ID],5,9),"" "","" ""),3)),Tableau1,2,FALSE)"
.Value = .Value
End With
End Sub
Function Ch_Pays(ID As Range, Tabl As Range)
Parties = Split(ID, " ")
With Tabl.ListObject
Set ID2 = .ListColumns(1).DataBodyRange.Find(Parties(1))
y = .Range.Row
Ch_Pays = .ListColumns(2).DataBodyRange.Rows(ID2.Row - y)
End With
End Function
Avec une fonction personnalisée Vilkle()( dans module1 : Ville(xID, xRecherche) où xID est l'ID à rechercher et Xrecherche la plage de recherche.
Le code :
VB:
Function Ville(xID, xRecherche)
Dim t, ref, i&
t = xRecherche.Value: ref = Val(Mid(xID, 5, 3))
For i = 1 To UBound(t)
If ref = t(i, 1) Then Ville = t(i, 2): Exit Function
Next i
End Function
Avec une fonction personnalisée Vilkle()( dans module1 : Ville(xID, xRecherche) où xID est l'ID à rechercher et Xrecherche la plage de recherche.
Le code :
VB:
Function Ville(xID, xRecherche)
Dim t, ref, i&
t = xRecherche.Value: ref = Val(Mid(xID, 5, 3))
For i = 1 To UBound(t)
If ref = t(i, 1) Then Ville = t(i, 2): Exit Function
Next i
End Function
Function Ch_Pays(ID As Range, Tabl As Range)
Parties = Split(ID, " ")
With Tabl.ListObject
Set ID2 = .ListColumns(1).DataBodyRange.Find(Parties(1))
y = .Range.Row
Ch_Pays = .ListColumns(2).DataBodyRange.Rows(ID2.Row - y)
End With
End Function
Avec une fonction personnalisée Vilkle()( dans module1 : Ville(xID, xRecherche) où xID est l'ID à rechercher et Xrecherche la plage de recherche.
Le code :
VB:
Function Ville(xID, xRecherche)
Dim t, ref, i&
t = xRecherche.Value: ref = Val(Mid(xID, 5, 3))
For i = 1 To UBound(t)
If ref = t(i, 1) Then Ville = t(i, 2): Exit Function
Next i
End Function
Function Ch_Pays(ID As Range, Tabl As Range)
Parties = Split(ID, " ")
With Tabl.ListObject
Set ID2 = .ListColumns(1).DataBodyRange.Find(Parties(1))
y = .Range.Row
Ch_Pays = .ListColumns(2).DataBodyRange.Rows(ID2.Row - y)
End With
End Function
Le code qui suit devrait le faire (avec ou sans espace) :
VB:
Function Ville(ByVal xID, xRecherche)
Dim t, ref, i&
t = xRecherche.Value: xID = Mid(Replace(xID, " ", ""), 4)
ref = Val(Left(xID, Len(xID) - 3))
For i = 1 To UBound(t)
If ref = t(i, 1) Then Ville = t(i, 2): Exit Function
Next i
End Function