Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ListBox avec sources variables

1 view
Skip to first unread message

Barb

unread,
Oct 29, 2001, 11:29:59 AM10/29/01
to
Bonjour,

Je travaille actuellement sur la création d'une base de
données sous la forme de fiches (feuilles d'un même
classeur).
Pour celà j'ai créé un premier UserForm qui me permet
d'enregistrer des données et qui fonctionne normalement. A
chaque enregistrement correspond un code (ex : toto), une
nouvelle feuille étant nommée de ce code automatiquement.

J'aimerai maintenant créer un autre UserForm pour pouvoir
modifier des données déjà enregistrées.

Mon souci peut être illustré par l'exemple suivant :
un enfant Toto est inscrit à 3 activités extra-scolaires,
à l'enregistrement, on avait donc un code "Toto" auquel
correspondent 3 cellules dans une feuille nommée "toto"
(ces trois cellules ont les mêmes références dans toutes
les feuilles A1, A2 et A3). A la modification, je
souhaiterai que lorsque l'utilisateur choisira "toto" dans
le ListBox, qu'un autre ListBox correspondant aux
activités ait pour source les 3 cellules de la feuille
toto et affiche donc les 3 activités.
Il faudrait donc que dès que l'utilisateur choisit toto,
une procédure retrouve la feuille ainsi nommée dans le
classeur actif et établisse les 3 cellules comme source du
ListBox.

j'espère avoir été claire

Merci

Barbara

Pascal Engelmajer

unread,
Oct 29, 2001, 12:31:59 PM10/29/01
to
salut,
une piste si tu ne veux pas du tout cuit.
il faut nommer les plages de référence "toto" etc (voir insertion > nom > définir etc , ou sélectionner la plage de référence, puis entrer toto dans la zone d'adresse, finir par la touche ENTREE)
il te faut aussi créer une nouvelle listbox (ou une combobox) liste2
dans le module de code de l'userform utiliser la procédure évenementielle liste1.Change
(on suppose que liste1 est le nom de la première ListBox) avec l'instruction :
 
me.liste2.RowSource="toto!" & me.liste1.Value
 
bon courage.
Pascal

Frédéric Sigonneau

unread,
Oct 29, 2001, 3:16:53 PM10/29/01
to
Bonsoir,

Une solution pourrait être de remplir "dynamiquement" une ListBox2 en fonction
de l'entrée sélectionnée dans la ListBox1.
Par ex, sur ton premier Userform place côte à côte deux ListBox. La Listbox1
pour afficher les noms des enfants, la ListBox2 pour afficher leurs activités.
La ListBox1 peut être remplie dans l'événement Initialize du UserForm :

Private Sub UserForm_Initialize()
For i = 1 To Sheets.Count
'ajoute comme entrée le nom des feuilles du classeur (=enfants)
ListBox1.AddItem Sheets(i).Name
Next
ListBox1.ListIndex = 0
End Sub

Ensuite, l'affichage dans la ListBox2 est modifié en fonction du changement de
l'entrée sélectionnée dans ListBox1. Tu peux utiliser pour ça une des deux
méthodes suivantes :

'modifier la propriété RowSource
Private Sub ListBox1_Change()
ListBox2.RowSource = ""
ListBox2.RowSource = _
ListBox1.List(ListBox1.ListIndex) & "!" & _
Sheets(ListBox1.List(ListBox1.ListIndex)).Range("A1:A3").Address
End Sub

'utiliser la méthode AddItem
Private Sub ListBox1_Change()
ListBox2.Clear
For i = 1 To 3
ListBox2.AddItem _
Sheets(ListBox1.List(ListBox1.ListIndex)).Range("A" & i).Value
Next
End Sub

FS
--
Frédéric Sigonneau [né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau

Barb a écrit :

Pascal Engelmajer

unread,
Oct 30, 2001, 4:05:49 AM10/30/01
to
salut,
bien sur un bug dans ma proposition il faut :
me.liste2.RowSource = me.liste1.Value & "!" & me.liste1.Value
Pascal
 
Pascal Engelmajer <pascal.e...@ilyapa.net> wrote in message news:uQFqBAKYBHA.1556@tkmsftngp03...

Pascal Engelmajer

unread,
Oct 30, 2001, 4:08:01 AM10/30/01
to
salut Frédéric,
pourquoi ListBox1.List(ListBox1.ListIndex) et non pas ListBox1.Value ?
merci.
Pascal
Frédéric Sigonneau <frederic....@wanadoo.fr> wrote in message
news:3BDDB935...@wanadoo.fr...

Frédéric Sigonneau

unread,
Oct 30, 2001, 4:44:23 AM10/30/01
to
Salut Pascal,

Une habitude... J'aime bien travailler avec les tableaux. Je trouve qu'on
maîtrise bien ce qu'on fait, même si, dans ce cas, ça donne une syntaxe assez
malcommode à lire :-)

FS
--
Frédéric Sigonneau [né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau

Pascal Engelmajer a écrit :

Pascal Engelmajer

unread,
Oct 30, 2001, 9:15:45 AM10/30/01
to
salut Frédéric,
Merci

Pascal
Frédéric Sigonneau <frederic....@wanadoo.fr> wrote in message
news:3BDE7677...@wanadoo.fr...
0 new messages