Sélection d'un checkbox en VBA Excel

bernie48 Messages postés 2 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009 - 23 févr. 2009 à 16:28
bernie48 Messages postés 2 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009 - 24 févr. 2009 à 20:01
Bonjour

J'aurais besoin d'un petit peu d'aide car je suis un peu débutant encore en prog.
J'ai créé un formulaire VBA sous excel
mon classeur excel contient 20 feuilles
A la fin de mon formulaire, j'aimerais pouvoir sélectionner les feuilles par des checkbox et ensuite les visualiser en PrintPreview.
Je pense qu'il faudrait créer un truc, et mettre toutes les check box sélectionnées dans ce truc et ensuite pouvoir faire un PrintPreview sur ce truc... Mais moi je ne parle pas courrament le VBA Excel :(

Il y a aussi un autre pb, c'est que l'ordi comprenne qu'une checkbox correspond à une feuille...

Je suis preneur de tout aide!

Merci beaucoup

2 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 févr. 2009 à 19:56
Salut
Qu'appelles-tu un Formulaire ? Une UserForm ou bien une des feuilles avec une présentation particulière ?
Sur quoi, quel objet, doivent être posés les ChechBox ? le UserForm ou la feuille ?
Qu'est ce qui déclenchera le PrintPreview ? Un bouton de commande ?

Dans le "Visual Basic Editor" :
Sur ta UserForm, positionne autant de CheckBox que tu possèdes de feuilles "previewable" (prépare un premier complètement avant de le recopier)
F4 pour faire apparaitre la fenêtre des propriétés.
Donne leur le nom (Name) que tu veux, par exemple  chkFeuille1, chkFeuille2, etc : On les repèrera par leur nom : Il faut donc que la racine du nom soit la même
Dans chaque CheckBox, ajoute le nom de la feuille associée dans la propriété "Tag" (attention aux erreurs de saisie)
Définis un groupe d'appartenance (GroupName) par exemple "maListeDeFeuilles"
Ce "Tag" ne sert à rien, il te permet simplement de stocker un texte ou un chiffre.

Au moment où tu veux prévisualiser tes feuilles (dans le code de ton bouton de commande), il te suffit de faire une boucle :
   Dim xxx As Object
   For Each xxx In Me.Controls
      If xxx.GroupName = "maListeDeFeuilles" Then
         If xxx.Value = True Then
            Sheets(xxx.Tag).PrintPreview
         End If
      End If
   Next
Le GroupName permet de ne s'intéresser qu'au groupe de CheckBox représentant tes feuilles, sinon, il pourrait vouloir auss itraiter d'autres CheckBox présentes sur la même UserForm (au cas où ...)

NB : En voulant tester ces lignes, j'ai réussit à bloquer Excel car au lancement du Preview, ma Userform était ouverte.
===>>> Sauvegarde bien ton travail avant de le tester
Il va falloir voir pourquoi (pas eu le temps de retaper tout)

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
bernie48 Messages postés 2 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 24 février 2009
24 févr. 2009 à 20:01
Salut


d'abord, merci pour ta réponse aussi rapide.
pour préciser un peu mon message :
formulaire = UserForm comme tu l'avais deviné
les checkbox sont mis sur le userform
l'aperçu avant impression se fait bien par un bouton


En fait je ne comprends pas bien ce que tu veux dire par :"Dans chaque CheckBox, ajoute le nom de la feuille associée dans la propriété "Tag" " et l'aide de Tag n'était pas très claire.

d'autre part toutes les checkbox mises dans le userform sont susceptibles d'être printpreviewable si elles sont cochées donc ais-je besoin d'un Groupname? (ca m'arrangerait car j'ai pas très bien compris : "Définis un groupe d'appartenance (GroupName) par exemple "maListeDeFeuilles""

pour éviter que la userform ne soit ouverte au lancement du preview, je comptais utiliser un UserForm.Hide

merci encore si toi ou qqd'autre a la patience de me répondre.

bernie 
0