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
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
=RECHERCHEV(STXT([@ID];CHERCHE(" ";[@ID])+1;CHERCHE("@";SUBSTITUE([@ID];" ";"@";2))-1-CHERCHE(" ";[@ID]))*1;Tableau1;2;0)
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
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
je tiens à vous remercier pour votre aide et votre soutienRe,
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
je vous remercie pour votre aideBonjour
Sans VBA :VB:=RECHERCHEV(STXT([@ID];CHERCHE(" ";[@ID])+1;CHERCHE("@";SUBSTITUE([@ID];" ";"@";2))-1-CHERCHE(" ";[@ID]))*1;Tableau1;2;0)
En VBA
Code: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
Re,
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
SalamBonjour
Sans VBA :VB:=RECHERCHEV(STXT([@ID];CHERCHE(" ";[@ID])+1;CHERCHE("@";SUBSTITUE([@ID];" ";"@";2))-1-CHERCHE(" ";[@ID]))*1;Tableau1;2;0)
En VBA
Code: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
C'est sûr que si le fichier initial n'est pas représentatif on ne risque pas de donner la solution...la fonction recherche ne fonctionne pas les caractère sans espace
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