[VBA] index, match erreur de syntaxe

Résolu/Fermé
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 - 16 juin 2015 à 13:30
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 17 juin 2015 à 11:39
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
16 juin 2015 à 14:19
Bonjour
Match(Feuil5.Range("C3:" & j), 0))
manquerait pas quelque chose ,
Match(valeurcherchée,Feuil5.Range("C3:" & j), 0))
0
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 031
Modifié par tyranausor le 16/06/2015 à 17:21
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?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 16/06/2015 à 17:29
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
0
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 031
16 juin 2015 à 18:00
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!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
16 juin 2015 à 18:12
faute de frappe: j'ai mis 1 point de trop
Range("A7") = ..Index(Nomclient, Feuil5...
devient
Range("A7") = .Index(Nomclient, Feuil5
0
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 031
Modifié par tyranausor le 16/06/2015 à 18:32
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é. !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 16/06/2015 à 18:48
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...
0
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 031
16 juin 2015 à 19:03
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
16 juin 2015 à 22:19
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 031
Modifié par tyranausor le 16/06/2015 à 22:36
Merci beaucoup Michel_m, ça fonction impec. Je reconnais que le vba est très sensible aux points et aux row!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 juin 2015 à 11:39
OOOOOOOOUF!
A bientôt
:o)
0