bernie48
Messages postés2Date d'inscriptionlundi 23 février 2009StatutMembreDernière intervention24 février 2009
-
23 févr. 2009 à 16:28
bernie48
Messages postés2Date d'inscriptionlundi 23 février 2009StatutMembreDernière intervention24 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...
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
bernie48
Messages postés2Date d'inscriptionlundi 23 février 2009StatutMembreDernière intervention24 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.