[VBA] index, match erreur de syntaxe [Résolu/Fermé]

Signaler
Messages postés
3529
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
24 juin 2021
-
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
-
Bonjour, j'ai un problème avec mon code pour faire une recherche inversée (une recherchev à l'envers).

J'ai un classeur comprenant deux feuilles avec le code d'un userform rédigé ainsi

Private Sub UserForm_initialize()
With Feuil5
Derlign = .Range("C" & Rows.Count).End(xlUp).Row
Me.Nomclient.Clear
For L = 3 To Derlign
Nomclient.AddItem .Range("C" & L).Value
Next
End With
End Sub
Private Sub CommandButton1_Click()
Dim i, j As String
ActiveSheet.Shapes("R").Delete
i = Range("A6500").End(xlUp)
j = Range("C6500").End(xlUp)
Range("A7") = Application.WorksheetFunction.Index(Nomclient, Feuil5.Range("A3:" & i), Match(Feuil5.Range("C3:" & j), 0))
Unload Me
End Sub


Il va en fait me chercher tous les noms des clients dans la feuille "Clients" (Feuil5). Dans ma feuille "Facture" (feuille où je travaille) j'ai une forme (d'où shape dans ce code) qui me sert de bouton dans la cellule A7 et qui, après, sera remplacé par la valeur recherchée en fonction de celle sélectionnée dans mon combobox.

Mais là où ça ne fonctionne pas, c'est pour la fonction index et équiv (match en vba). Sur Excel ça fonctionne bien mais en vba j'ai une erreur de syntaxe

5 réponses

Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 199
Bonjour
Match(Feuil5.Range("C3:" & j), 0))
manquerait pas quelque chose ,
Match(valeurcherchée,Feuil5.Range("C3:" & j), 0))
Messages postés
3529
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
24 juin 2021
1 911
Bonjour michel_m, merci d'avoir corrigé mon étourderie! Après correction, il me dit "Sub ou function non définie" en sélectionant Match. Que faire?
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 199
Application.match(...
solution de feignant, donc la mienne:

Pas besoin de faire précéder "application" avecr Worksheetfunction
With application
Range("A7") = ..Index(Nomclient, Feuil5.Range("A3:" & i), .Match(Feuil5.Range("C3:" & j), 0))
end with

n'oublie pas les points devant Index et match
Messages postés
3529
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
24 juin 2021
1 911
Re,
j'ai corrigé mon code avec ce que tu m'as dit, j'ai "la méthode 'range' de l'objet '_worksheet' a échoué.
Range("A8") = Application.WorksheetFunction.Index(Feuil5.Range("A3:" & i), Application.Match(Nomclient, Feuil5.Range("C3:" & j), 0))


Avec ton code il me dit qu'il y a erreur de syntaxe alors que je l'ai copié/collé. Et si je saute une ligne (donc .match sur une nouvelle ligne), j'ai une erreur, l'éditeur attend une expression!
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 199
faute de frappe: j'ai mis 1 point de trop
Range("A7") = ..Index(Nomclient, Feuil5...
devient
Range("A7") = .Index(Nomclient, Feuil5
Messages postés
3529
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
24 juin 2021
1 911
C'est ce que je pensais. Désolé mais ça ne fonctionne pas plus avec un point, j'ai toujours "la méthode 'range' de l'objet '_worksheet' a échoué. !
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 199
J'avais pas fait attention
Range("A3:" & i)
ecris
Range("A3:A" & i)
pareil pour la Deuxieme
Range("C3:C" & j),

Mais tu n'as pas tenu compte de ce que je t'ai écris sur workbookfunction et Application...
Messages postés
3529
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
24 juin 2021
1 911
J'ai corrigé ainsi
 i = Range("A6500").End(xlUp)
j = Range("C6500").End(xlUp)

With Application
Range("A7") = .Index(Nomclient, Feuil5.Range("A3:A" & i),
.Match(Feuil5.Range("C3:C" & j), 0))
End With


Je dois avoir quelque chose qui est encore faux, mais je ne sais pas quoi
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 199
Y'a un signe indien !!!

i = Range("A6500").End(xlUp).row
j = Range("C6500").End(xlUp).row

With Application
Range("A7") = .Index( Feuil5.Range("A3:A" & i),.Match(Nomclient,Feuil5.Range("C3:C" & j), 0))
End With
Messages postés
3529
Date d'inscription
jeudi 6 août 2009
Statut
Membre
Dernière intervention
24 juin 2021
1 911
Merci beaucoup Michel_m, ça fonction impec. Je reconnais que le vba est très sensible aux points et aux row!
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 199
OOOOOOOOUF!
A bientôt
:o)