[Excel] vlookup ça marche, ça marche pas

Fermé
gui - 22 juin 2009 à 15:19
 gui - 22 juin 2009 à 17:31
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
A voir également:

5 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
22 juin 2009 à 16:15
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+
0
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
0
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"
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
22 juin 2009 à 16:51
Tu as été plus rapide.

Oui comme dés qu'il tape un caractére la routine se déclenche et que c'était un chiffre j'ai pensé que les références n'allaient que de 0 à 9 mais avec le traitement d'érreur on peut taper plusieurs caractéres.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
22 juin 2009 à 16:46
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) :

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,
0

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?
0