VBA Alimenter une ComboBox

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
 

Samsam22

XLDnaute Nouveau
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

  • ComboBox Excel Downloads.xlsm
    18.8 KB · Affichages: 78

Samsam22

XLDnaute Nouveau
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 !
 

CHALET53

XLDnaute Barbatruc
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

  • samsam22 bis.xlsm
    30.2 KB · Affichages: 78

Samsam22

XLDnaute Nouveau
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...
 

13GIBE59

XLDnaute Accro
Bonjour le forum, bonjour Samsam

En pièce jointe, une autre approche tirée de mon fichier Comptes (là).
L'avantage est que tu peux ajouter autant d'items sur les colonnes B à M, et que la feuille "Données" peut être masquée.

Amuse toi bien.

JB
 

Pièces jointes

  • Combo liées.xlsm
    182.4 KB · Affichages: 77

Samsam22

XLDnaute Nouveau
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 !
 

Samsam22

XLDnaute Nouveau
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...
 

CHALET53

XLDnaute Barbatruc
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

  • samsam22 bis.xlsm
    32.3 KB · Affichages: 46

Samsam22

XLDnaute Nouveau
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 ?
 

Samsam22

XLDnaute Nouveau
J'ai créé rapidement un fichier pour te montrer.

Il y a 3 champs à compléter et en cliquant sur valider j'aimerai qu'ils arrivent dans les cellules vides du tableau...et ainsi de suite pour chaque entrée ! Merci beaucoup
 

Pièces jointes

  • Excel Downloads_Cellule vide.xlsm
    19.5 KB · Affichages: 62

CHALET53

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 922
Messages
2 093 658
Membres
105 777
dernier inscrit
Lili1411