[VBA] index, match erreur de syntaxe
Résolu
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
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
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
-
ContributeurBonjour
Match(Feuil5.Range("C3:" & j), 0))
manquerait pas quelque chose ,
Match(valeurcherchée,Feuil5.Range("C3:" & j), 0))
-
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?
-
ContributeurApplication.match(...
solution de feignant, donc la mienne:
Pas besoin de faire précéder "application" avecr WorksheetfunctionWith 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
-
-
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! -
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é. !
-
Merci beaucoup Michel_m, ça fonction impec. Je reconnais que le vba est très sensible aux points et aux row!