XL 2010 Macro enregistrement PDF + choix des feuilles

safranien

XLDnaute Occasionnel
Bonjour à tous

je vous sollicite car je ne suis pas très aguerri sur la manip VBA. Ci-joint un fichier exemple. Dans Feuil1 il y a un bouton qui me permet d'enregistrer en PDF les feuilles 1,4,5,6,8,9 et 10. Ces feuilles constituent un rapport de base. J'aimerais offrir la possibilité d'ajouter des feuilles et que lorsque je clique sur le bouton "Impression PDF"; il y ait une check box qui me permette de choisir les feuilles à ajouter. Par défaut, seraient cochées les cases correspondant aux feuilles de base citées précédemment. Voir l'onglet "Donnees" dans lequel j'ai imagé cela.

Deux autres questions :

j'ai essayé de manier le code présent dans mon fichier récupéré sur un forum mais il ne comportait pas ce qu'il fallait faire pour dissocier les feuilles et revenir sur une feuille précise la feuille 1). Ce que j'ai écrit est certainement très moche et doit pouvoir être optimisé

With Sheets("Feuil12")
.Activate
End With
With Sheets("Feuil1")
.Select
End With

Pour finir, j'exécute cette macro actuellement sur un fichier qui est assez lourd et chargé de données et de graphiques. Dans mon fichier, j'ai un menu déroulant qui me permet de passer d'une installation à une autre avec des mises à jour de données et de calculs. Je lance l'impression PDF, je passe au site suivant etc. Pour les premieres impressions, tout se passe bien, j'ai, par exemple, 14 pages qui sortent dans mon PDF. Au bout du 4e ou 5e changement de site, quand je lance l'impression PDF, je n'ai plus que 10 pages qui sortent dans le PDF (je devrais toujours avoir 14 pages). Je suis obligé de fermer excel, de relancer le fichier, l'impression et là j'ai bien mes 14 pages. Je me dis qu'en fermant tout l'excel je dois vider une sorte de mémoire cache. Si c'est cela selon vous, est ce qu'il est possible d'insérer dans le code une fonction permettant de vider la mémoire à chaque lancement d'impression?

J'espère que vous pourrez m'aider.

Bonne soirée
 

Pièces jointes

  • Safranien - Impression PDF macro.xlsm
    47.8 KB · Affichages: 19
Solution
Re

Pour le changer le CodeName :

1593602863180.png


Fenêtre "Propriété" => F4 pour l'afficher...


Et pour ta dernière demande essaies comme ceci :

VB:
For Each WS In ThisWorkbook.Worksheets
  Select Case WS.CodeName
    Case "Feuil1", "Feuil2", "Feuil4", "Feuil6", "Feuil7", "X_Feuil3"
       Me.ListBox1.AddItem WS.Name
        If WS.CodeName = "Feuil4" Or WS.CodeName = "Feuil7" Or WS.CodeName = "X_Feuil3" Then
           Me.ListBox1.Selected(x) = True
        End If
         x = x + 1
  End Select
Next WS

Mais c'est lourd si tu dois changer souvent les feuilles ou si tu en supprimes ... Une méthode "générique" évitait ceci...

Bien à toi, à vous,
@+Thierry

EDIT Re Patrick, Salut Fanch55

_Thierry

XLDnaute Barbatruc
Repose en paix
Bien Patrick ta démo,

Cependant si je lance depuis le Boutton j'ai ceci :

1593625248851.png


Si je regarde dans VBE :

1593625359569.png


Donc je m'attendrais à ne voir que ceci dans l'USF :
1593625406890.png


Même si ce n'est pas logique... Puisque on voudrait faire la sélection de feuilles qui ne sont pas "élligibles" à être listées...

Peut-être c'est de la "Fuzzy Logic" ;)

Mais sinon belle démo de ton invention , je commence à saisir ce GetDialog sur USF... Est-ce pérenne au regards des versions d'Excel et sur 365, Mac etc...
Bonne soirée
@+Thierry
 

patricktoulon

XLDnaute Barbatruc
bonsoir Thierry
ta capture 1 est correcte

dans la listbox
ca liste tout les prédéterminés + les préfixe x dans le codename mais seuls les prédéterminés sont sélectionnés


a moins que je eusse pas compris la demande

mais il me semble bien que c'est ce qui est demandé ;)

et oui c'est pérenne, je n'est rien inventé j'utilise le userform comme il est possible de le faire

et comme qui il n'a pas beaucoup été démontré de le faire

mais depuis quelques temps je commence a voir des propositions de ce type sur des forums anglophone et sur un autre français que je nommerais pas ;)

c'est quelque chose d'assez simple il n'y a rien d'extraordinaire

pourquoi un userform aurait été affublé de:
  1. mode modal ou pas
  2. fonction close ou hide
  3. la possibilité de recevoir des variables public ainsi que des fonctions public
d'ailleurs le type de vbcomponent n'est il pas 3 comme les modules classe ;)

si je dois
résumer
un module userform est un module classe doté de la plaque userform pour interface et piloter les sub et fonctions comme on le ferait dans un module classe

il y a COMME DANS UN MODULE CLASSE des choses a bien comprendre dans le contexte
comme je l'ai dit si le coeur vous en dit je veux bien vous expliquer point par point les méthodes et pièges a éviter (ceux qui savent faire des modules classe comprendront) ;)
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Patrick

Grand merci de ta sollicitude, mais je crains de ne plus avoir la concentration nécessaire actuellement pour apprendre de nouvelles choses en VBA. (Que je n'utilise plus qu'ici, pour me "détendre" ;))

Déja j'ai quelques soucis de santé actuellement, rien de grave, c'est suite au confinement.

Et d'un autre côté, je ne sais pas si tu connais un peu Microsoft Dynamics NAV (Navision), je suis chef de projet dans ma boite depuis une bonne 12ène d'années sur le déploiement/évolution de cet ERP, mais cette année on passe sur la nouvelle version "Business Central", et tout ce que je connaissais en language "C/AL", est à mettre à la poubelle pour apprendre maintenant le "AL" avec Visual Studio Code et TFS (Team Fundation Server)... C'est vraiment loin d'être une mince affaire, heureusement que j'ai une assistante qui arrive à suivre... ;)

Mais grand merci de ta spontanéité et dévouement pour nous aider, Je suis certain que Lionel sera un élève assidu (et je suivrai de loin...)

Bien à toi, à vous
@+Thierry
 

patricktoulon

XLDnaute Barbatruc
re
non pas du tout je ne connais pas du tout
j'imagine que ça doit être perturbant
lionel n'est pas un élève assidu c'est un tète de lard ;)
quand on lui dit que c'est pas le bon chemin il persiste dans une plateforme gazière:p:p:p

perso je développe sur vb(6) (encore) et vb.net dans visual studio et vba pour me détendre et faire mu muse

une chose que beaucoup qu'oublie trop souvent les développeur amateur ou non en vba c'est la consommation de ressource matérielle qui est le plus gros handicap de vba (pire avec version 2007+)
c'est une chose a la quelle j’attache beaucoup d’importance
je cherche donc toujours a tirer le meilleurs avec moins de gaz possible
chez moi ça doit répondre du tac au tac sinon c'est poubelle

definition de "avec moins de gaz possible"
exactement le contraire de tout ce que fait lionel


Smiley ... MDR | Emoticone, Emoji souriant, Images drôles
mort de rire smiley - Recherche Google | Animatie
Smiley ... MDR | Rosto sorridente, Símbolos emoji, Smiley emoji
 

safranien

XLDnaute Occasionnel
Bonjour

Thierry, j'espère que tes problèmes de santé se résoudront. Merci encore à tous, j'ai pu avancer sur la construction de mon fichier et lorsque j'aurai fini j'étudierai les autres solutions.
Je rencontre d'autres difficultés, je vais poster un nouveau sujet sur le forum, en espérant que vous pourrez m'aider pour celui là aussi.

Bonne journée à tous
 

Discussions similaires

Réponses
8
Affichages
348