[VBA] index, match erreur de syntaxe

Résolu
tyranausor Messages postés 3545 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   2 039
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   2 039
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   2 039
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   2 039
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   2 039
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
OOOOOOOOUF!
A bientôt
:o)
0