Probléme de syntaxe sur vlookup

Résolu/Fermé
renoncule62 Messages postés 83 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 1 juillet 2012 - 24 oct. 2011 à 11:39
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 26 oct. 2011 à 14:33
Bonjour,
Je me permet de vous soumettre mon soucis de syntaxe sur un vlookup dans lequel la donnée cherchée est le texte d'un textbox dans un userform et dont la matrice se trouve dans un autre classeur ouvert . Voici la syntaxe qui ne fonctionne pas et me renvoie "erreur d'exécution 9, l'indice n'appartient pas à la sélection". j'ai fait des recherches sur les moteurs de recherche mais en vain.

1.If Application.VLookup(Userform1.TextBox1.Value, Workbooks("C:\mon dossier\mon sous dossier\mon fichier.xls" ).Sheets("Feuil1" ).Range("b1:d131" ), 3, False) = "NOK" Then
2.MsgBox "Pas bon"
3.Else
4.MsgBox "bon"
5.End If


merci de votre aide





6 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
24 oct. 2011 à 13:43
Ce n'est pas un problème de syntaxe mais un problème d'utilisation de Vlookup :
Le fichier source doit être ouvert (et dans ce cas le nom ne comprend pas le chemin d'accès)
0
renoncule62 Messages postés 83 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 1 juillet 2012 2
25 oct. 2011 à 10:35
Merci pour ton intervention Patrice33740, effectivement ça marche maintenant parc contre je ne parviens pas à finaliser mon code pour que ça marche. Voila ce que je veux faire:
j'ai 2 fichiers ouverts:
monfichier1ouvert depuis lequel j'apelle la macro via l'userform1
et monfichier2ouvert ou s'execute la rechercheV (vlokup)
If Application.VLookup(userform1.TextBox2.Value, Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Range("b1:g131"), 5, False) <> Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Cells(4, 9).Value Then
validation.Show

jusqu' à là ça va.
dans l'userform "validation" 2 bouton : non= unload me et oui ou je souhaite rendre égales les valeurs de Range("b1:g131"), 5, False et Cells(4, 9).
je veux modifier la valeur en ("b1:g131"), 5 en y copiant la valeur de Cells(4, 9).

voici ce que j'ai essayé mais qui ne fonctionne pas et me renvoie:"N°1004 Erreur définie par l'application ou par l'objet"

quand clic sur bouton oui
Private Sub boutonoui_Click()
Application.VLookup(userform1.TextBox2.Value, Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Range("b1:g131"), 5, False) = Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Cells(4, 9).Value
Unload Me
End Sub

Encore une fois, je ne suis pas expert en vba (peut-être complétement à côté de la bonne syntaxe), merci encore pour votre aide.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
25 oct. 2011 à 13:54
Bonjour,

Vlookup renvoi une valeur située dans une matrice, pas son emplacement !

Tu peux utiliser Find.
Par exemple :
Private Sub boutonoui_Click()
Dim rng As Range
Dim cel As Range

  'définir la plage de recherche
  Set rng = Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Range("b1:b131")
  'Rechercher l'information dans la colonne
  Set cel = rng.Find(userform1.TextBox2.Value, lookat:=xlWhole)
  'Modifier la valeur de la 5ème colonne
  cel.Offset(0, 4).Value = Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Cells(4, 9).Value

  Unload Me

End Sub
0
renoncule62 Messages postés 83 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 1 juillet 2012 2
25 oct. 2011 à 23:01
Merci beaucoup Patrice33740 pour ce retour efficasse avec les explicatifs,
ça marche nickel, même si je ne connais pas les fontionnalités de Dim rng As Range et Dim cel As Range mais je chercherais à comprendre.
puis-je mettre une ligne de code pour ouvrir un msg box au cas ou la valeur de "userform1.TextBox2.Value" ne serait pas trouvée stp?

Merci encore...
0

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

Posez votre question
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
25 oct. 2011 à 23:19
Avec le test :
Private Sub boutonoui_Click()
Dim rng As Range
Dim cel As Range

  'définir la plage de recherche
  Set rng = Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Range("b1:b131")
  'Rechercher l'information dans la colonne
  Set cel = rng.Find(userform1.TextBox2.Value, lookat:=xlWhole)
  'Si la valeur n'est pas trouvée ...
  If cel Is Nothing Then
    '... afficher un message d'erreur et rendre la main
    MsgBox "la valeur cherchée : " & vbCr & _
           userform1.TextBox2.Value & vbCr & _
           "n'a pas été trouvée", vbCritical
    Exit Sub
  End If
  'Modifier la valeur de la 5ème colonne
  cel.Offset(0, 4).Value = Workbooks("monfichier2ouvert.xls").Sheets("Feuil1").Cells(4, 9).Value

  Unload Me

End Sub
0
renoncule62 Messages postés 83 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 1 juillet 2012 2
26 oct. 2011 à 09:16
Bonjour,
Merci pour tout, c'est exactement ce que je cherchais à faire,
c'est sympa...
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
26 oct. 2011 à 14:33
De rien, au plaisir de te relire sur le Forum
0