Beber19
Messages postés2Date d'inscriptionmercredi 22 juillet 2009StatutMembreDernière intervention22 juillet 2009
-
22 juil. 2009 à 08:43
Beber19
Messages postés2Date d'inscriptionmercredi 22 juillet 2009StatutMembreDernière intervention22 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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 !