RechercheV dans un userform vba excel

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 23 janv. 2007 à 00:53
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 23 janv. 2007 à 11:53
Re bonjour à tous,

Me revoilà avec une nouvelle question.

J'ai un userform avec ComboBox1 - ComboBox2 - TextBox1 - TextBox2 - TextBox3 - TextBox4 - TextBox5  et  TextBox6.

Je voudrais que si j'entre une données du ComboBox1 (Colonne A)  ou ComboBox2 (Colonne B)qui sont reliés avec l'onglet Liste des clients, que les données de la colone C, D, E, F, G, H se transcrivent dans les TextBox1 à 6. Comme une rechercheV.

Je voudrais que les données s'inscrivent automatiquement dans les TextBox.

Comment faire?

7 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
23 janv. 2007 à 11:14
C'est assez simple, il me semble...
Tu as la Function déjà faite, tu as le genre d'appel à faire... quoi de plus ?

Bon, je commence à douter de la clarté de mes explications...
Copie la Function Recherche, crée une procédure BlaBla() et fais un test
Lorsque tu cliques sur un bouton, appelle la procédure BlaBla

Sub BlaBla()
Dim Ligne as long

'sélection de la feuille
Sheets("MaFeuilleàRechercher").Activate
Ligne Recherche(combobox 1 .text, <gras>1) ' recherche du texte sélectionné du combobox1 dans la colonne A ( columns("A:A") </gras> Columns(1) )

If Ligne = 0 then exit sub ' valeur non trouvée


On a trouvé la valeur sur la ligne Ligne
Textbox1 = Range("C" & Ligne)
Textbox2 = Range("D" & Ligne)

Si tu veux faire la recherche sur la colonne B
Ligne = Recherche(combobox2.text, 2) ' recherche du texte sélectionné dans la colonne B
If Ligne = 0 then exit sub ' valeur non trouvée
Textbox1 = Range("C" & Ligne)

Textbox2 = Range("D" & Ligne)

est-ce plus clair ?

MPi
1
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
23 janv. 2007 à 02:23
Il te faudrait faire Recherche de la colonne A jusqu'à ce que tu trouves la valeur du Combo1. Quand tu trouves la valeur, tu vérifies éventuellement que la cellule en B soit identique au Combo2. Si c'est le cas, tu replis tes textbox avec les cellules de droite sur cette ligne trouvée.

Je dis éventuellement parce que tu ne dis pas si c'est possible qu'une donnée en A ou en B puisse se répéter.

Si ce n'est pas le cas une simple recherche dans la colonne voulue sera assez.
Tu peux utiliser une Function comme celle-ci pour retracer la ligne

Function Recherche(Valeur, Colonne As Integer) As Long
    Dim Trouve As Range
   
    Set Trouve = Columns(Colonne).Find(Valeur, , xlValues, xlWhole)
    If Not Trouve Is Nothing Then  'Trouvé
        Recherche = Trouve.Row
    End If
End Function

Tu l'appelles comme ceci
Dim Ligne as Long
Ligne = Recherche(LeTexte, NumeroDeColonne)
Textbox1 = Range("C" & Ligne)
Textbox2 = Range("D" & LIgne)
.................etc

MPi
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
23 janv. 2007 à 02:29
J'ai oublié de mentionner que la Function doit retourner 0, disons, si la valeur n'a pas été trouvée pour éviter les erreurs

Donc,
Function Recherche(Valeur, Colonne As Integer) As Long
    Dim Trouve As Range
   
    Set Trouve = Columns(Colonne).Find(Valeur, , xlValues, xlWhole)
    If Not Trouve Is Nothing Then  'Trouvé
        Recherche = Trouve.Row
    Else
        Recherche = 0
    End If
End Function

Et tu vérifies la valeur de Ligne avant de remplir tes textbox
Ligne = Recherche(LeTexte, NumeroDeColonne)
If Ligne > 0 then
'Remplir les textbox

Et comme le paramètre Valeur de la Function est Variant, tu peux aussi rechercher un chiffre

MPi
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
23 janv. 2007 à 02:36
Excuse moi mais j'ai un peux de difficulté à comprendre tous ça.

Désolé je suis apprenti vba 
0

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

Posez votre question
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
23 janv. 2007 à 02:54
En réalité, dans le comboBox1 ( Donnée de la colone A), je choisi le numéro de client donc si je choisi par exemple le numéro de client 123456, dans le combobox 2 et tous les textbox, il me donne les info du client qui se retrouve dans l'onglet Liste des clients qui sont représenté par ligne dans la page excel exemple ligne 4 car ligne 5 et + represente les autres clients.
Donc sur la ligne 4, colonne A représente # de client, colonne B Nom du client, Colonne C adresse etc........

Je veux aussi avoir le choix aussi par nom de client (ComboBox2) pour remplire l'autre ComboBox1 et les textBox.
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
23 janv. 2007 à 11:46
Merci beaucoup MPI pour ton aide 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
23 janv. 2007 à 11:53
Y a pas de quoi
Bonne continuation

MPi
0