Vlookup dans Userform
Dernière réponse : dans Programmation
Bonjour à tous,
Depuis quelques jours j'ai un soucis avec vba sous excel.
Dans une Userform je prévois une Combobox et une Text box dont la valeur dépend de la Combobox.
Voilà le code :
Private Sub Client_Change()
Rep.Text = Client.Text
End Sub
Private Sub Rep_Change()
Dim NouveauRep As Integer
Dim NomClient As Integer
NomClient = Val(Client.Text)
NouveauRep = Val(Rep.Text)
NouveauRep = Application.WorksheetFunction.VLookup(NomClient, PERSO.XLS!repertoire, 2)
End Sub
En sachant que :
- Client = Combobox
- Rep = Textbox
- PERSO.XLS!repertoire = zone repertoire avec les données sur 2 colonnes (1ere colonne = Client; 2eme colonne = Rep)
Ce que je cherche :
- Comment donner une valeur à Rep en fonction du choix de Client?
Merci d'avance et @+
Depuis quelques jours j'ai un soucis avec vba sous excel.
Dans une Userform je prévois une Combobox et une Text box dont la valeur dépend de la Combobox.
Voilà le code :
Private Sub Client_Change()
Rep.Text = Client.Text
End Sub
Private Sub Rep_Change()
Dim NouveauRep As Integer
Dim NomClient As Integer
NomClient = Val(Client.Text)
NouveauRep = Val(Rep.Text)
NouveauRep = Application.WorksheetFunction.VLookup(NomClient, PERSO.XLS!repertoire, 2)
End Sub
En sachant que :
- Client = Combobox
- Rep = Textbox
- PERSO.XLS!repertoire = zone repertoire avec les données sur 2 colonnes (1ere colonne = Client; 2eme colonne = Rep)
Ce que je cherche :
- Comment donner une valeur à Rep en fonction du choix de Client?
Merci d'avance et @+
Autres pages sur : vlookup userform
Lassé par la pub ? Créez un compte
As-tu lu les règles de la catégorie Programmation ? Les règles du forum Programmation- A lire !
Si oui, mets ton message en forme.
Si non, vas vite les lire et ... mets ton message en forme.
Si oui, mets ton message en forme.
Si non, vas vite les lire et ... mets ton message en forme.
Désolé de m'être précipité, merci pour la leçon.
Je reprends.
Pour la Combobox :
Pour la Textbox :
Merci de votre aide.
Je reprends.
Pour la Combobox :
Private Sub Client_Change()
Rep.Text = Client.Text
End Sub
Pour la Textbox :
Private Sub Rep_Change()
Dim NouveauRep As Integer
Dim NomClient As Integer
NomClient = Val(Client.Text)
NouveauRep = Val(Rep.Text)
NouveauRep = Application.WorksheetFunction.VLookup(NomClient, PERSO.XLS!repertoire, 2)
End Sub
Merci de votre aide.
M'enfin, tu n'as pas dit qu'il y avait une erreur !
Quel est le message d'erreur ?
Qu'y a-t-il dans la variable repertoire (Ligne 7) ?
As-tu mis l'Option Explicit au début de ton code ?
Ligne 5, tu récupères la valeur numérique de Client.Text. Bizarre.
Ligne 7, tu écrases la valeur que tu a mis dans NouveauRep à la ligne 6 avant de t'en servir. Bizarre.
Le deuxième paramètre de VLookUp attend un objet Range, pas une chaîne de caractères.
Tu ne peux donc pas construire ce paramètre avec la syntaxe fichier.xls!range.
Quel est le message d'erreur ?
Qu'y a-t-il dans la variable repertoire (Ligne 7) ?
As-tu mis l'Option Explicit au début de ton code ?
Ligne 5, tu récupères la valeur numérique de Client.Text. Bizarre.
Ligne 7, tu écrases la valeur que tu a mis dans NouveauRep à la ligne 6 avant de t'en servir. Bizarre.
Le deuxième paramètre de VLookUp attend un objet Range, pas une chaîne de caractères.
Tu ne peux donc pas construire ce paramètre avec la syntaxe fichier.xls!range.
Voilà la solution, je ne sais si c'est la meilleure mais elle fonctionne.
En sachant que :
- Essai = Userform
- Client = Combobox
- Rep = Textbox dont le résultat dépend de Combobox
- perso.xls et client= classeur perso.xls masquer avec feuille client dans laquelle se trouve la plage repertoire
- repertoire = plage de cellule sur 2 colonnes où sont enregistrées mes données
1ère colonne = client
2ème colonne = rep
Merci à zeb pour tous les conseils.
A bientôt
Option Explicit
Private Sub Annuler_Click()
Unload Essai
End Sub
Private Sub Client_Change()
Rep.Text = Client.Text
End Sub
Private Sub Rep_Change()
Dim NomClient As Variant
NomClient = Client.Text
Workbooks("perso.xls").Activate
Sheets("client").Activate
Rep.Text = WorksheetFunction.VLookup(NomClient, Range("repertoire"), 2, False)
End Sub
En sachant que :
- Essai = Userform
- Client = Combobox
- Rep = Textbox dont le résultat dépend de Combobox
- perso.xls et client= classeur perso.xls masquer avec feuille client dans laquelle se trouve la plage repertoire
- repertoire = plage de cellule sur 2 colonnes où sont enregistrées mes données
Merci à zeb pour tous les conseils.
A bientôt
Bonjour,
J'ai de nouveau des soucis. Maintenant, c'est un combobox "contact" dont le résultat dépend du combobox "client". En sachant que la troisième colonne de ma plage de cellule (repertoire) est le nom d'une autre plage de cellule. Cette nouvelle plage de cellule me sert come rowsource de la combobox "contact".
J'ai essayé de remplacer
Je planche et ne trouve pas la solution. Pouvez-vous m'aider SVP.
Merci d'avance et bonne soirée.
J'ai de nouveau des soucis. Maintenant, c'est un combobox "contact" dont le résultat dépend du combobox "client". En sachant que la troisième colonne de ma plage de cellule (repertoire) est le nom d'une autre plage de cellule. Cette nouvelle plage de cellule me sert come rowsource de la combobox "contact".
Option Explicit
Private Sub Annuler_Click()
Unload Nouveau_dossier
End Sub
Private Sub Client_Change()
Rep.Text = Client.Text
Contact.RowSource = Client.RowSource
End Sub
Private Sub Contact_Change()
Dim NomClient As Variant
NomClient = Client.Text
Workbooks("perso.xls").Activate
Sheets("client").Activate
Contact.RowSource = WorksheetFunction.VLookup(NomClient, Range("repertoire"), 3, False)
End Sub
J'ai essayé de remplacer
par
Contact.RowSource = Client.Rowsource
mais le résultat ne me renvoie pas la plage de cellules pour sélectionner le contact.
Contact.Text = Client.Text
Je planche et ne trouve pas la solution. Pouvez-vous m'aider SVP.
Merci d'avance et bonne soirée.
Lassé par la pub ? Créez un compte
Sauf si tu as une bonne raison de ne pas le faire