[Excel] vlookup ça marche, ça marche pas
gui
-
gui -
gui -
Bonjour à vous,
j'ai crée une petite recherchev dans un userform à partir de données sur une feuille excel. Une référence est associé aux différents choix proposés par une combobox puis des textbox se remplissent automatiquement grâce à la recherchev.
Ce qui me rend un peu fou, c'est que j'ai réussi à faire marcher le code suivant:
Private Sub TextBox3_Change() 'référence pour recherchev
If TextBox3.Text <> "" Then
TextBox4.Text = Application.VLookup(1 * TextBox3, Worksheets("Feuil3").Range("A17:G40"), 5, False)
TextBox6.Text = Application.VLookup(1 * TextBox3, Worksheets("Feuil3").Range("A17:G40"), 4, False)
TextBox7.Text = Application.VLookup(1 * TextBox3, Worksheets("feuil3").Range("A17:G40"), 7, False)
Else
TextBox4.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
End If
End Sub
Mais ensuite quand je reprends ce code pour l'appliquer à un autre classeur excel, en modifiant les données nécessaires, ça ne marche plus:
Private Sub TextBox2_reference_Change() 'référence pour recherchev
If TextBox2_reference.Text <> "" Then
TextBox3_days.Text = Application.VLookup(1 * TextBox2_reference, Worksheets("hidenrow").Range("A3:G26"), 3, False)
TextBox4_hours.Text = Application.VLookup(1 * TextBox2_reference, Worksheets("hidenrow").Range("A3:G26"), 4, False)
TextBox5_priceperpilot.Text = Application.VLookup(1 * TextBox2_reference, Worksheets("hidenrow").Range("A3:G26"), 5, False)
Else
TextBox3_days.Text = ""
TextBox4_hours.Text = ""
TextBox5_priceperpilot.Text = ""
End If
End Sub
Quelqu'un voudrait-il bien m'aider à y voir un peu plus clair, s'il vous plait?
Cordialement
j'ai crée une petite recherchev dans un userform à partir de données sur une feuille excel. Une référence est associé aux différents choix proposés par une combobox puis des textbox se remplissent automatiquement grâce à la recherchev.
Ce qui me rend un peu fou, c'est que j'ai réussi à faire marcher le code suivant:
Private Sub TextBox3_Change() 'référence pour recherchev
If TextBox3.Text <> "" Then
TextBox4.Text = Application.VLookup(1 * TextBox3, Worksheets("Feuil3").Range("A17:G40"), 5, False)
TextBox6.Text = Application.VLookup(1 * TextBox3, Worksheets("Feuil3").Range("A17:G40"), 4, False)
TextBox7.Text = Application.VLookup(1 * TextBox3, Worksheets("feuil3").Range("A17:G40"), 7, False)
Else
TextBox4.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
End If
End Sub
Mais ensuite quand je reprends ce code pour l'appliquer à un autre classeur excel, en modifiant les données nécessaires, ça ne marche plus:
Private Sub TextBox2_reference_Change() 'référence pour recherchev
If TextBox2_reference.Text <> "" Then
TextBox3_days.Text = Application.VLookup(1 * TextBox2_reference, Worksheets("hidenrow").Range("A3:G26"), 3, False)
TextBox4_hours.Text = Application.VLookup(1 * TextBox2_reference, Worksheets("hidenrow").Range("A3:G26"), 4, False)
TextBox5_priceperpilot.Text = Application.VLookup(1 * TextBox2_reference, Worksheets("hidenrow").Range("A3:G26"), 5, False)
Else
TextBox3_days.Text = ""
TextBox4_hours.Text = ""
TextBox5_priceperpilot.Text = ""
End If
End Sub
Quelqu'un voudrait-il bien m'aider à y voir un peu plus clair, s'il vous plait?
Cordialement
A voir également:
- [Excel] vlookup ça marche, ça marche pas
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
5 réponses
Bonjour,
D'abord que je comprenne bien, il suffit de taper un caractère et automatiquement le traitement des RechercheV se déclenche.
Alors, le 1* c'est pour prendre un chiffre tapé en caractère (dans la textbox) et le convertir en chiffre pour le retrouver dans la colonne A3 à A26. Donc ce n'est pas cohérent car il ne peut y avoir que 10 chiffres possibles.
Donc j'en déduit que dans cette colonne il y a des caractères (non pas des chiffres).
Donc il faut supprimer le 1*
Mais par contre si il y a à la fois des chiffres et des lettres il faut en plus typer la colonne A en texte.
Je pense (sans certitude bien sur) que l'erreur doit venir de cette incompatibilité de type.
A+
D'abord que je comprenne bien, il suffit de taper un caractère et automatiquement le traitement des RechercheV se déclenche.
Alors, le 1* c'est pour prendre un chiffre tapé en caractère (dans la textbox) et le convertir en chiffre pour le retrouver dans la colonne A3 à A26. Donc ce n'est pas cohérent car il ne peut y avoir que 10 chiffres possibles.
Donc j'en déduit que dans cette colonne il y a des caractères (non pas des chiffres).
Donc il faut supprimer le 1*
Mais par contre si il y a à la fois des chiffres et des lettres il faut en plus typer la colonne A en texte.
Je pense (sans certitude bien sur) que l'erreur doit venir de cette incompatibilité de type.
A+
Merci Pilas de me répondre,
en effet j'ai essayé d'enlever le "1*" mais l'erreur persiste.
en cherchant, j'ai testé de copier coller le code qui marche bien (le premier) sur un classeur excel vierge reprenant la base de données, ça marche.
en revanche, lorsque je copie ce code dans un classeur excel dans word (parce que c'est la mise en page que j'aimerais), le code ne marche plus.
Que dois je faire?
Merci pour ton aide
en effet j'ai essayé d'enlever le "1*" mais l'erreur persiste.
en cherchant, j'ai testé de copier coller le code qui marche bien (le premier) sur un classeur excel vierge reprenant la base de données, ça marche.
en revanche, lorsque je copie ce code dans un classeur excel dans word (parce que c'est la mise en page que j'aimerais), le code ne marche plus.
Que dois je faire?
Merci pour ton aide
finallement ça marche entre excel et word
par contre peux-tu, s'il te plait, m'expliquer pourquoi 10 chiffres maximum?
"retrouver le numéro correspondant dans la colonne A3 à A26. Donc ce n'est pas cohérent car il ne peut y avoir que 10 chiffres possibles"
par contre peux-tu, s'il te plait, m'expliquer pourquoi 10 chiffres maximum?
"retrouver le numéro correspondant dans la colonne A3 à A26. Donc ce n'est pas cohérent car il ne peut y avoir que 10 chiffres possibles"
Oui, peut-être qu'il est perdu dans la référence au classeur.
Regarde, je te propose une écriture légérement différente en ajoutant "ThisWorkbook" pour lui préciser d'aller chercher au bon endroit. Au passage j'ai ajouté un petit traitement d'erreur au cas ou l'utilisateur tape une référence fausse (mais tu peux l'enlever si tu veux) :
Cordialement,
Regarde, je te propose une écriture légérement différente en ajoutant "ThisWorkbook" pour lui préciser d'aller chercher au bon endroit. Au passage j'ai ajouté un petit traitement d'erreur au cas ou l'utilisateur tape une référence fausse (mais tu peux l'enlever si tu veux) :
Private Sub TextBox2_reference_Change()
On Error GoTo Fin
If TextBox2_reference.Text <> "" Then
TextBox3_days.Text = Application.VLookup(TextBox2_reference, ThisWorkbook.Worksheets("hidenrow").Range("A3:G26"), 3, False)
TextBox4_hours.Text = Application.VLookup(TextBox2_reference, ThisWorkbook.Worksheets("hidenrow").Range("A3:G26"), 4, False)
TextBox5_priceperpilot.Text = Application.VLookup(TextBox2_reference, ThisWorkbook.Worksheets("hidenrow").Range("A3:G26"), 5, False)
Else
TextBox3_days.Text = ""
TextBox4_hours.Text = ""
TextBox5_priceperpilot.Text = ""
End If
Fin:
If Err <> 0 Then
TextBox3_days.Text = "<Erreur de saisie>"
End If
End Sub--
Cordialement,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je vais essayer ton code, merci!
en attendant je me suis demandé si l'erreur n'était pas générée par ce code que je t'ai pas transmis avant:
Private Sub UserForm_Initialize() 'combobox rowsource
ComboBox1_training.RowSource = "hidenrow!C3:C26"
End Sub
puisque j'ai lié la textbox2_reference à la combobox1_training
en fait il me semble que la recherchev ne marche qu'avec des nombres, donc le texte de la combobox renvoie un nombre dans la textbox2_reference
qu'en penses-tu?
en attendant je me suis demandé si l'erreur n'était pas générée par ce code que je t'ai pas transmis avant:
Private Sub UserForm_Initialize() 'combobox rowsource
ComboBox1_training.RowSource = "hidenrow!C3:C26"
End Sub
puisque j'ai lié la textbox2_reference à la combobox1_training
en fait il me semble que la recherchev ne marche qu'avec des nombres, donc le texte de la combobox renvoie un nombre dans la textbox2_reference
qu'en penses-tu?