OVH Cloud OVH Cloud

Problème de liste déroulante et de VBA

12 réponses
Avatar
cygab
Bonjour à tous,

après avoir lu vos contributions, je me suis lancé dans la construction de
listes déroulantes. En fait j'ai besoin de quatre listes déroulantes sur une
même diapo. J'ai utilisé le code suivant en l'adaptant à chaque liste :

Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub

Mon problème, c'est qu'à chaque utilisation d'une des liste déroulantes, je
me retrouve avec les items mais multipliés... dans la liste, on va avoir 8
choix au lieu des 4 précisés dans le code...

Je n'y arrive pas. Pouvez-vous m'aider...?
Merci d'avance

10 réponses

1 2
Avatar
Tisane
Bonjour cygab,

après avoir lu vos contributions, je me suis lancé dans la
construction de listes déroulantes. En fait j'ai besoin de quatre
listes déroulantes sur une même diapo. J'ai utilisé le code suivant
en l'adaptant à chaque liste :
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub
Mon problème, c'est qu'à chaque utilisation d'une des liste
déroulantes, je me retrouve avec les items mais multipliés... dans la
liste, on va avoir 8 choix au lieu des 4 précisés dans le code...


Ajoute la ligne suivante entre les lignes Private Sub et With...
ComboBox1.Clear
qui va réinitialiser la liste.

--
Tisane

Avatar
cygab
Merci pour votre réponse ultra-rapide (un samedi après-midi !)

J'ai rajouté l'instruction mais ça ne marche pas. Les autres listes
déroulantes se retrouvent vidées de leurs items... Je vous joins ma diapo,
cela sera plus parlant :

http://cjoint.com/?bgpxlYzLqC

Je rajoute que je ne cherche pas à ce que les choix des listes déclenchent
des comportements spéciaux, il s'agit juste de pouvoir afficher ces
différents choix...

Merci.

"Tisane" a écrit dans le message de
news:
Bonjour cygab,

après avoir lu vos contributions, je me suis lancé dans la
construction de listes déroulantes. En fait j'ai besoin de quatre
listes déroulantes sur une même diapo. J'ai utilisé le code suivant
en l'adaptant à chaque liste :
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub
Mon problème, c'est qu'à chaque utilisation d'une des liste
déroulantes, je me retrouve avec les items mais multipliés... dans la
liste, on va avoir 8 choix au lieu des 4 précisés dans le code...


Ajoute la ligne suivante entre les lignes Private Sub et With...
ComboBox1.Clear
qui va réinitialiser la liste.

--
Tisane




Avatar
Jean-Pierre FORESTIER
As-tu essayé de faire ta macro pour CHAQUE combobox ? (combobox 1, combobox
2, etc.)

--
Jean-Pierre FORESTIER Microsoft MVP PowerPoint
Auteur de PowerPoint 2002 chez Micro Application
"cygab" a écrit dans le message de news:

Merci pour votre réponse ultra-rapide (un samedi après-midi !)

J'ai rajouté l'instruction mais ça ne marche pas. Les autres listes
déroulantes se retrouvent vidées de leurs items... Je vous joins ma diapo,
cela sera plus parlant :

http://cjoint.com/?bgpxlYzLqC

Je rajoute que je ne cherche pas à ce que les choix des listes déclenchent
des comportements spéciaux, il s'agit juste de pouvoir afficher ces
différents choix...

Merci.

"Tisane" a écrit dans le message de
news:
Bonjour cygab,

après avoir lu vos contributions, je me suis lancé dans la
construction de listes déroulantes. En fait j'ai besoin de quatre
listes déroulantes sur une même diapo. J'ai utilisé le code suivant
en l'adaptant à chaque liste :
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub
Mon problème, c'est qu'à chaque utilisation d'une des liste
déroulantes, je me retrouve avec les items mais multipliés... dans la
liste, on va avoir 8 choix au lieu des 4 précisés dans le code...


Ajoute la ligne suivante entre les lignes Private Sub et With...
ComboBox1.Clear
qui va réinitialiser la liste.

--
Tisane








Avatar
Tisane
Merci pour votre réponse ultra-rapide (un samedi après-midi !)
J'ai rajouté l'instruction mais ça ne marche pas. Les autres listes
déroulantes se retrouvent vidées de leurs items... Je vous joins ma
diapo, cela sera plus parlant :
http://cjoint.com/?bgpxlYzLqC
Je rajoute que je ne cherche pas à ce que les choix des listes
déclenchent des comportements spéciaux, il s'agit juste de pouvoir
afficher ces différents choix...


Oui, je me souviens maintenant du fil de discussion sur cette liste
déroulante (autre pseudo ?).
Tu veux simplement que l'item choisi reste affiché. Modifie le code comme
ci-dessous :

Private Sub ComboBox4_DropButtonClick()
If ComboBox4.ListCount = 0 Then
With ComboBox4
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub

Bien entendu, à copier et renommer pour les 3 autres listes.
Merci pour avoir mis l'exemple à disposition. Cela évite d'avoir à recréer
le contexte soi-même et on est sûr de parler de la même chose.
Je te rappelle que je ne suis pas bonne en programmation (mais je me soigne
;-)) et que donc, il y a peut-être un code plus adapté.

--
Tisane

Bonjour cygab,

après avoir lu vos contributions, je me suis lancé dans la
construction de listes déroulantes. En fait j'ai besoin de quatre
listes déroulantes sur une même diapo. J'ai utilisé le code suivant
en l'adaptant à chaque liste :
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub
Mon problème, c'est qu'à chaque utilisation d'une des liste
déroulantes, je me retrouve avec les items mais multipliés... dans
la liste, on va avoir 8 choix au lieu des 4 précisés dans le code...


Ajoute la ligne suivante entre les lignes Private Sub et With...
ComboBox1.Clear
qui va réinitialiser la liste.

--
Tisane





Avatar
cygab
Oui je crois, je ne m'y connais pas vraiment en VBA...
J'ai défini le code pour chaque combobox mais on dirait que tout finit par
se mélanger... Dans le code de la combobox1, je retrouve les lignes de la
combobox2... un beau désordre !


"Jean-Pierre FORESTIER" a écrit
dans le message de news:
As-tu essayé de faire ta macro pour CHAQUE combobox ? (combobox 1,
combobox

2, etc.)

--
Jean-Pierre FORESTIER Microsoft MVP PowerPoint
Auteur de PowerPoint 2002 chez Micro Application
"cygab" a écrit dans le message de news:

Merci pour votre réponse ultra-rapide (un samedi après-midi !)

J'ai rajouté l'instruction mais ça ne marche pas. Les autres listes
déroulantes se retrouvent vidées de leurs items... Je vous joins ma
diapo,


cela sera plus parlant :

http://cjoint.com/?bgpxlYzLqC

Je rajoute que je ne cherche pas à ce que les choix des listes
déclenchent


des comportements spéciaux, il s'agit juste de pouvoir afficher ces
différents choix...

Merci.

"Tisane" a écrit dans le message de
news:
Bonjour cygab,

après avoir lu vos contributions, je me suis lancé dans la
construction de listes déroulantes. En fait j'ai besoin de quatre
listes déroulantes sur une même diapo. J'ai utilisé le code suivant
en l'adaptant à chaque liste :
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub
Mon problème, c'est qu'à chaque utilisation d'une des liste
déroulantes, je me retrouve avec les items mais multipliés... dans
la




liste, on va avoir 8 choix au lieu des 4 précisés dans le code...


Ajoute la ligne suivante entre les lignes Private Sub et With...
ComboBox1.Clear
qui va réinitialiser la liste.

--
Tisane












Avatar
cygab
Merci ! J'essaye tout de suite...


"Tisane" a écrit dans le message de
news:
Merci pour votre réponse ultra-rapide (un samedi après-midi !)
J'ai rajouté l'instruction mais ça ne marche pas. Les autres listes
déroulantes se retrouvent vidées de leurs items... Je vous joins ma
diapo, cela sera plus parlant :
http://cjoint.com/?bgpxlYzLqC
Je rajoute que je ne cherche pas à ce que les choix des listes
déclenchent des comportements spéciaux, il s'agit juste de pouvoir
afficher ces différents choix...


Oui, je me souviens maintenant du fil de discussion sur cette liste
déroulante (autre pseudo ?).
Tu veux simplement que l'item choisi reste affiché. Modifie le code comme
ci-dessous :

Private Sub ComboBox4_DropButtonClick()
If ComboBox4.ListCount = 0 Then
With ComboBox4
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub

Bien entendu, à copier et renommer pour les 3 autres listes.
Merci pour avoir mis l'exemple à disposition. Cela évite d'avoir à recréer
le contexte soi-même et on est sûr de parler de la même chose.
Je te rappelle que je ne suis pas bonne en programmation (mais je me
soigne

;-)) et que donc, il y a peut-être un code plus adapté.

--
Tisane

Bonjour cygab,

après avoir lu vos contributions, je me suis lancé dans la
construction de listes déroulantes. En fait j'ai besoin de quatre
listes déroulantes sur une même diapo. J'ai utilisé le code suivant
en l'adaptant à chaque liste :
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub
Mon problème, c'est qu'à chaque utilisation d'une des liste
déroulantes, je me retrouve avec les items mais multipliés... dans
la liste, on va avoir 8 choix au lieu des 4 précisés dans le code...


Ajoute la ligne suivante entre les lignes Private Sub et With...
ComboBox1.Clear
qui va réinitialiser la liste.

--
Tisane








Avatar
cygab
Merci beaucoup à vous, ça fonctionne. Je viens de comprendre le
fonctionnement de l'interface VBA, c'est à dire le fait que le code des
différentes combobox apparait dans la même fenêtre...
Merci encore, c'était urgent et je respire !!! Bonne fin de week-end.
http://cjoint.com/?bgrknNH3mN

Le code définitif :

Private Sub ComboBox1_DropButtonClick()
If ComboBox1.ListCount = 0 Then
With ComboBox1
.AddItem "Votre réponse"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox2_DropButtonClick()
If ComboBox2.ListCount = 0 Then
With ComboBox2
.AddItem "Votre réponse"
.AddItem "Je maintiens"
.AddItem "Je renonce"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox3_DropButtonClick()
If ComboBox3.ListCount = 0 Then
With ComboBox3
.AddItem "Votre réponse"
.AddItem "Je maintiens"
.AddItem "Je renonce"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox4_DropButtonClick()
If ComboBox4.ListCount = 0 Then
With ComboBox4
.AddItem "Votre réponse"
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub
---------------------------------------------
Private Sub ComboBox5_DropButtonClick()
If ComboBox5.ListCount = 0 Then
With ComboBox5
.AddItem "Votre réponse"
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub
------------------------------------------



"cygab" a écrit dans le message de
news:
Merci ! J'essaye tout de suite...


"Tisane" a écrit dans le message de
news:
Merci pour votre réponse ultra-rapide (un samedi après-midi !)
J'ai rajouté l'instruction mais ça ne marche pas. Les autres listes
déroulantes se retrouvent vidées de leurs items... Je vous joins ma
diapo, cela sera plus parlant :
http://cjoint.com/?bgpxlYzLqC
Je rajoute que je ne cherche pas à ce que les choix des listes
déclenchent des comportements spéciaux, il s'agit juste de pouvoir
afficher ces différents choix...


Oui, je me souviens maintenant du fil de discussion sur cette liste
déroulante (autre pseudo ?).
Tu veux simplement que l'item choisi reste affiché. Modifie le code
comme


ci-dessous :

Private Sub ComboBox4_DropButtonClick()
If ComboBox4.ListCount = 0 Then
With ComboBox4
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub

Bien entendu, à copier et renommer pour les 3 autres listes.
Merci pour avoir mis l'exemple à disposition. Cela évite d'avoir à
recréer


le contexte soi-même et on est sûr de parler de la même chose.
Je te rappelle que je ne suis pas bonne en programmation (mais je me
soigne

;-)) et que donc, il y a peut-être un code plus adapté.

--
Tisane

Bonjour cygab,

après avoir lu vos contributions, je me suis lancé dans la
construction de listes déroulantes. En fait j'ai besoin de quatre
listes déroulantes sur une même diapo. J'ai utilisé le code suivant
en l'adaptant à chaque liste :
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End Sub
Mon problème, c'est qu'à chaque utilisation d'une des liste
déroulantes, je me retrouve avec les items mais multipliés... dans
la liste, on va avoir 8 choix au lieu des 4 précisés dans le code...


Ajoute la ligne suivante entre les lignes Private Sub et With...
ComboBox1.Clear
qui va réinitialiser la liste.

--
Tisane












Avatar
JièL
Bonjoir(c) cygab

juste un conseil, éviter de nommer vos objets de façon si simpliste. Il
n'y a rien de pire quand on reprend un code quelques temps plus tard
(temps qui peut être des années) et de lire quelque chose qui était
pourtant tellement évident lors de la création

--
JièL / Jean-Louis GOUBERT - Bonne année 2007
Là bas mieux qu'en face ;-) http://forums.offices.free.fr/
La FAQ Outlook est là : http://faq.outlook.free.fr/
Les stats de CDO : http://faq.outlook.free.fr/cdo/

Le 06/01/2007 17:11 vous avez écrit ceci :
Merci beaucoup à vous, ça fonctionne. Je viens de comprendre le
fonctionnement de l'interface VBA, c'est à dire le fait que le code des
différentes combobox apparait dans la même fenêtre...
Merci encore, c'était urgent et je respire !!! Bonne fin de week-end.
http://cjoint.com/?bgrknNH3mN

Le code définitif :

Private Sub ComboBox1_DropButtonClick()
If ComboBox1.ListCount = 0 Then
With ComboBox1
.AddItem "Votre réponse"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox2_DropButtonClick()
If ComboBox2.ListCount = 0 Then
With ComboBox2
.AddItem "Votre réponse"
.AddItem "Je maintiens"
.AddItem "Je renonce"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox3_DropButtonClick()
If ComboBox3.ListCount = 0 Then
With ComboBox3
.AddItem "Votre réponse"
.AddItem "Je maintiens"
.AddItem "Je renonce"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox4_DropButtonClick()
If ComboBox4.ListCount = 0 Then
With ComboBox4
.AddItem "Votre réponse"
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub
---------------------------------------------
Private Sub ComboBox5_DropButtonClick()
If ComboBox5.ListCount = 0 Then
With ComboBox5
.AddItem "Votre réponse"
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub
------------------------------------------


Avatar
cygab
Merci pour vos conseils mais, au risque de paraître naïf, qu'appelez-vous
"objets" ?

"JièL" a écrit dans le message de
news:%23gm0z%
Bonjoir(c) cygab

juste un conseil, éviter de nommer vos objets de façon si simpliste. Il
n'y a rien de pire quand on reprend un code quelques temps plus tard
(temps qui peut être des années) et de lire quelque chose qui était
pourtant tellement évident lors de la création

--
JièL / Jean-Louis GOUBERT - Bonne année 2007
Là bas mieux qu'en face ;-) http://forums.offices.free.fr/
La FAQ Outlook est là : http://faq.outlook.free.fr/
Les stats de CDO : http://faq.outlook.free.fr/cdo/

Le 06/01/2007 17:11 vous avez écrit ceci :
Merci beaucoup à vous, ça fonctionne. Je viens de comprendre le
fonctionnement de l'interface VBA, c'est à dire le fait que le code des
différentes combobox apparait dans la même fenêtre...
Merci encore, c'était urgent et je respire !!! Bonne fin de week-end.
http://cjoint.com/?bgrknNH3mN

Le code définitif :

Private Sub ComboBox1_DropButtonClick()
If ComboBox1.ListCount = 0 Then
With ComboBox1
.AddItem "Votre réponse"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox2_DropButtonClick()
If ComboBox2.ListCount = 0 Then
With ComboBox2
.AddItem "Votre réponse"
.AddItem "Je maintiens"
.AddItem "Je renonce"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox3_DropButtonClick()
If ComboBox3.ListCount = 0 Then
With ComboBox3
.AddItem "Votre réponse"
.AddItem "Je maintiens"
.AddItem "Je renonce"
End With
End If
End Sub
----------------------------------------------
Private Sub ComboBox4_DropButtonClick()
If ComboBox4.ListCount = 0 Then
With ComboBox4
.AddItem "Votre réponse"
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub
---------------------------------------------
Private Sub ComboBox5_DropButtonClick()
If ComboBox5.ListCount = 0 Then
With ComboBox5
.AddItem "Votre réponse"
.AddItem "OUI définitif"
.AddItem "OUI MAIS"
.AddItem "NON MAIS"
.AddItem "DEMISSION générale"
End With
End If
End Sub
------------------------------------------




Avatar
JièL
Bonjoir(c) cygab

Le 06/01/2007 20:16 vous avez écrit ceci :
Merci pour vos conseils mais, au risque de paraître naïf, qu'appelez-vous
"objets" ?


C'est tout ce qu'il est possible d'ajouter dans PPT ou autres.
Une boite de dialogue est par exemple un objet, un graphique, un trait,
etc etc, tout ce qui à un nom.

On appelle aussi ceci des contrôles quand on parle d'objet VBA comme les
listes déroulantes les cases à cocher etc etc, mais la c'est plus
spécifique et j'étais ici plus généraliste.

Il est vrai que PPT (et les autres progs aussi) nomme tous les objets d'un
nom générique comme combobox1 par exemple et je vous proposais seulement
de les renommer de façon plus explicite afin de pouvoir maintenir votre
programme (si programme il y a) dans quelques temps.

J'ai déjà perdu de nombreuses heures à essayer de relire un code pourtant
très simple lors de sa création, ou encore pire, devoir maintenir un
"truc" qui à été fait par un autre sans le moindre commentaire et avec des
noms absolument pas significatifs.

Ce n'était qu'un conseil de programmeur puriste ;-)))

--
JièL / Jean-Louis GOUBERT - Bonne année 2007
Là bas mieux qu'en face ;-) http://forums.offices.free.fr/
La FAQ Outlook est là : http://faq.outlook.free.fr/
Les stats de CDO : http://faq.outlook.free.fr/cdo/

1 2