Liste déroulantes

Résolu
Beber19 Messages postés 2 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 08:43
Beber19 Messages postés 2 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 10:48
Bonjour à tous,
Je souhaite automatiser quelques actions dans un document WORD.
Aujourd'hui, j'utilise Word 2000 avec un VBA V6.0 .

Mon but est de supprimer certaines pages du document Word par le biais de 3 listes déroulantes. Pour cela, j'ai créé un « USERFORM ». Dans celui-ci, il y a 3 listes déroulantes. Pour l'exemple, ces listes seront numérotées de 1 à 3.
Dans la liste 1, j'ai le choix entre 10 valeurs différentes que l'on appellera « a, b, c, d, e, f, g, h, i et j ». Dans la liste 2, j'ai le choix entre 5 valeurs différentes que l'on appellera « k, l, m, n, o »et dans la liste 3, j'ai le choix entre 4 valeurs différentes que l'on appellera « p, q, r et s ».
Mon document Word comporte aujourd'hui une centaine de pages au total mais ce nombre va évoluer dans le temps.

Ce que je voudrais, c'est :
Si la liste 1 a et liste 2 l et liste 3 = r, alors les pages 10, 20, 85 et 100 seront supprimées.
Si la liste 1 c et liste 2 k et liste 3 = s, alors les pages 5, 30, 75, 80 et 90 seront supprimées.
Vous comprenez la suite et toutes les combinaisons sont vraies. De plus, les numéros des pages supprimées données en exemple sont déterminés par rapport au nombre de page du document complet.
Mon problème est que je ne sais pas récupérer les choix de chacunes des listes.

Voici le début du code qui va avec :

Private Sub Userform_initialize()
'determination de la liste 1
With ComboBox1
.AddItem "a"
.AddItem "b"
.AddItem "c"
.AddItem "d"
.AddItem "e"
.AddItem "f"
.AddItem "g"
.AddItem "h"
.AddItem "i"
.AddItem "j"
End With
'determination de liste 2
With ComboBox2
.AddItem "k"
.AddItem "l"
.AddItem "m"
.AddItem "n"
.AddItem "o"
End With
'determination de la liste 3
With ComboBox3
.AddItem "p"
.AddItem "q"
.AddItem "r"
.AddItem "s"
End With
End Sub
Private Sub Bt_Ok_Click()
'Validation des choix et suppression des pages demandees
End Sub
Private Sub Bt_annule_Click()
UserForm1.Hide
End Sub

Merci pour vos réponse

4 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
22 juil. 2009 à 09:16
Bonjour

Sur 3 événements Click , tu va enregistrer chacune des valeurs selectionnées

Sub Liste1_Click
If Liste1.Listindex<>-1 then
valeur1= Liste1.List(Liste1.Listindex)
End if
End Sub
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 juil. 2009 à 10:01
Salut
Tu veux, au moment du clic, connaitre la sélection des ListBox ?
Oui, suit la proposition de loulou69
Variante :
Private Sub Bt_Ok_Click() 
  If Liste1.Listindex <> -1 then 
    valeur1= Liste1.List(Liste1.Listindex) 
    ' ou encore, je pense que ça marche aussi
    valeur1 = Liste1.Text 
  End if
End Sub

Par contre, personnellement, je ne vois pas trop le rapport entre tes lettres et les numéros de page ...
S'il n'y a aucun lien direct, il te faudra donc créer autant de If que de combinaisons :
Dim Combinaison As String
   Combinaison = Liste1.Text & Liste2.Text & Liste3.Text
   If Combinaison = "alr" Then
     ' Ici le code pour supprimer les pages 10, 20, 85 et 100
   ElseIf Combinaison = "cks" Then
     ' Ici le code pour supprimer les pages 5, 30, 75, 80 et 90
etc ...
   End If
End If


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 juil. 2009 à 10:03
PS : Il faudra faire attention à une chose :
Si tu supprime la page 10, toutes les suivantes vont être décalées, c'est à dire que la 11 deviendra 10, 12 --> 11, ..., 20 --> 19
Donc, si tu dois supprimer des pages, commence toujours par la dernière, sinon, tu risques de supprimer la mauvaise !
3
Beber19 Messages postés 2 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 22 juillet 2009
22 juil. 2009 à 10:48
Merci à tous pour vos réponses.
Je me relance dans mon petit projet VBA...
0
Rejoignez-nous