VBA Alimenter une ComboBox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Samsam22

XLDnaute Nouveau
Bonjour,

Je me permets de solliciter vos lumières concernant l'alimentation d'une ComboBox sur un UserForm.

En effet, j'ai créé un UserForm pour une gestion d'un budget et je bloque sur les ComboBox associées à mes catégories. Pour être plus clair :

- Deux CheckBox correspondant à "Dépense" ou "Revenu" à cocher par l'utilisateur
- Dans le cas où la case "Dépense" est cochée, je souhaite que ma ComboBox1 s'alimente avec les valeurs des cellules d'une liste nommée "Dépense"
- Dans le cas où le choix "Logement" est effectué dans cette ComboBox1, je souhaite que ma ComboBox2 s'alimente avec les valeurs des cellules d'une liste nommée "Logement"
- Etc...jusqu'à une ComboBox4

Pourriez-vous s'il vous plaît m'aider à résoudre ce problème ?

Au départ, j'étais parti avec du code If...Then...End If mais compte tenu du nombre de catégories cela n'est pas très pratique et peu évolutif si je modifie le contenu des listes définies.

Merci 🙂

Sam
 
Bonjour Chalet,

Merci pour ta remarque. J'ai joint un fichier Excel comprenant une version très simplifiée de mon UserForm.

J'aimerai comprendre la logique à adopter pour alimenter une ComboBox à partir de la valeur sélectionnée dans une autre ComboBox et qui correspondrait au nom d'une liste de cellules. 😉
 

Pièces jointes

Merci pour ta réponse Chalet53 mais ça ne me convient pas vraiment...

En fait, j'aimerai comprendre le mécanisme d'Excel pour mon cas et non recopier bêtement un morceau de code !

Pourriez-vous s'il vous plaît m'expliquer comment Excel comprendrait que je veux faire ? C'est-à-dire :
- Charger dans une ComboBox1 les valeurs des cellules d'une plage nommée "Dépenses" si la CheckBox1 correspondante est cochée (alternativement "Revenus" si l'autre est cochée)
- Utiliser la valeur sélectionnée par l'utilisateur dans la ComboBox1 pour rechercher s'il existe une plage de cellule du même nom (par exemple "Logement" --> "Logement"), si tel est le cas alors charger dans la ComboBox2 les valeurs des cellules de la plage correspondante sinon ne rien faire

Merci !
 
Bonjour,
Une approche qui pourrait correspondre à ta demande
Elle implique un peu de rigueur dans la disposition des informations dans la feuille
Ainsi, lorsqu'une grande catégorie est choisie, je recherche dans la ligne 3 la correspondance avec le choix fait. A partir de là, je remplis la combobox2
D'autre part le choix entre Dépenses et Revenus doit se faire avec une optionbutton qui permet de choisir l'un ou l'autre mais pas les deux comme on peut le faire avec une checkbox

a+
 

Pièces jointes

Super ! Merci Chalet53, j'ai adapté à ma situation avec plusieurs ComboBox (4) et ça fonctionne plutôt bien...

Sauf que j'ai un soucis lorsque le formulaire n'est pas ouvert sur la même feuille que celle des listes, la ComboBox2 ne se remplit plus et je ne sais pas quoi modifier sur le code...
 
Merci pour ton fichier 13gibe59, j'y ai jeté un coup d'oeil mais je préfère la solution de Chalet53 pour l'instant car ton code implique de saisir chaque emplacement de données pour la valeur du listindex....un peu fastidieux et pas très flexible !

Chalet53, pourrais-tu me donner les modifications à faire sur ton code pour que le formulaire fonctionne dans une autre feuille que celle des "Listes" ? Merci !
 
Egalement, j'ai un "autre" petit souci ! J'ai créé un tableau dynamique (qui s'agrandit tout seul) dans une feuille appelée "Janvier".

Lorsque mon utilisateur clique sur le bouton du Userform pour ajouter la transaction, Excel doit me récupérer les données et les copier dans les colonnes de cette feuille mais, malgré l'utilisation d'un code pour trouver la dernière cellule vide d'une colonne, il me saute la première ligne vide de ce tableau et m'ajoute les données en dehors de celui-ci...
 
Pour le premier point, code modifié à remettre en lieu et place (sur la base de la création d'une feuille 1)
A ajuster en fonction du nom de la feuille et des informations qui s'y trouvent
concernant le problème du TCD, sans le fichier difficile de comprendre le problème
 

Pièces jointes

Super ! J'ai adapté le code et ça fonctionne parfaitement dans mon cas 🙂

En fait, ça n'est pas un TCD mais un tableau que j'ai inséré par le menu "Insérer un tableau": celui qui s'agrandit automatiquement.

Lorsque je clique sur valider, il n'arrive pas à me sélectionner la dernière cellule vide du tableau..des idées ?
 
Insère ce code dans le code de l'userform

Code:
Private Sub CommandButton1_Click()
derligne = Sheets("Données").Range("A65536").End(xlUp).Row + 1
With Sheets("Données")
.Range("A" & derligne) = TextBox1
.Range("B" & derligne) = TextBox2
.Range("C" & derligne) = TextBox3

End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
1 K
Retour