avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
23 janv. 2007 à 00:53
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 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.