XL 2010 Imprimer en PDF plusieurs feuilles en boucle

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

frederic1994

XLDnaute Nouveau
Bonjour et bonne année,

Ma mère travaille dans une école et tous les mois elle imprime en PDF (avant de les imprimer à l'école) les listes des élèves qui vont à l'étude et/ou à la garderie. Pour ce faire elle a quatre classeurs excel avec un certain nombre de pages, pour un total d'un peu plus de vingt feuilles réparties sur les quatre classeurs. Sur toutes ces feuilles, il n'y a que la liste des classes qui change.

J'avais dans l'idée de créée un classeur avec une feuille type, et une (ou plusieurs) feuille(s) avec toutes les listes, une par colonne. J'ai commencer par faire une boucle pour remplir ma feuille type sur une liste, jusque-là ça fonctionne, pour deux la deuxième ne se fait pas. Ci-dessous le code.

Code:
Dim i As Integer

For k = 1 To 2 'k = Numéro du colonne indicatif de la liste
For i = 4 To 41 'i = Numéro de ligne indicatif du nom de l'élève
Sheets("Liste").Range("A" & i) = Sheets("Etude 1").Cells(i - 2, k).Value
Next i
toPDF 'Imprimer en PDF (ne fonctionne pas)
Next k

Dans un deuxième temps, j'ai trouvé un code pour imprimer en PDF (avec PDF créator), j'ai essayer de l'adapter, mais n'y connaissant pas grand chose dans la "vrai" programmation en VBA, je n'y parviens pas à le faire fonctionner.

L'objectif est d'imprimer toutes les feuilles en un seul PDF, ce qui nécessite de garder en mémoire toutes les feuilles. S'il y avait une possibilité de changer l'en tête de page ce serait un plus.

Vous trouverez ci-joint le fichier excel.

En espérant avoir été clair, je vous remercie d'avance de l'attention que vous porterez à mon problème.
 

Pièces jointes

Bonsoir,

Sous Excel 2010 nul besoin de pdfcreator.
Edite toutes les feuilles dans le même répertoire que le classeur.
VB:
Option Explicit
Sub Classeur_en_Pdf()
Dim chemin As String, fichier As String
chemin = ThisWorkbook.Path & "\"
fichier = ThisWorkbook.Name
  ChDir chemin
  ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  chemin & fichier & ".pdf", Quality _
  :=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
  OpenAfterPublish:=False
End Sub
Bonne soirée.
 
Dernière édition:
Bonsoir,

Merci pour votre réponse, qui m'avance un peu. J'ai testé votre code qui m'a imprimer le classeur entier, j'ai réussi à l'adapter pour ma feuille uniquement, je l'ai inséré dans ma boucle et m'a imprimer deux feuille PDF. Et j'aimerais savoir si c'est possible de mettre les deux feuilles (pour l'essaie, une vingtaine en réalité) en un seul fichier PDF.

Code:
    'Imprimer en PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\utilisateur\Desktop\Classe_" & k & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

Merci.
 
Bonsoir,

Merci pour votre réponse, qui m'avance un peu. J'ai testé votre code qui m'a imprimer le classeur entier, j'ai réussi à l'adapter pour ma feuille uniquement, je l'ai inséré dans ma boucle et m'a imprimer deux feuille PDF. Et j'aimerais savoir si c'est possible de mettre les deux feuilles (pour l'essaie, une vingtaine en réalité) en un seul fichier PDF.

Code:
   'Imprimer en PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\utilisateur\Desktop\Classe_" & k & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

Merci.
Que veux-tu dire par m'a imprimé 2 feuilles pdf?
Ton code n'imprime en principe que la feuille active qui peut être constituée de plusieurs pages.
Si tu veux éditer 2 ou plusieurs feuilles ajoute en début de ton module
sheets(Array("feuil1","feuil2").select
VB:
Imprimer en PDF
sheets(Array("feuil1","feuil2").select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\utilisateur\Desktop\Classe_" & k & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
 
Bonjour,

Ma procédure commence par remplir mon tableau de la première liste de noms, l'imprime en PDF, puis remplace les noms par ma deuxième liste l'imprime en PDF, etc. Pour l'essaie j'ai deux listes, il m'a donc imprimé deux fichiers PDF, une pour chaque liste, et j'aimerai que les deux fichiers n'en fasse qu'un. Il faudrait qu'en cours de procédure l'impression PDF soit mémoriser pour que l'ensemble des pages soit sur le même PDF. Ou un assemblage ultérieur une fois toutes les pages imprimées en PDF, ce qui, je pense, sera un peu complexe.

J'espère avoir bien expliqué mon problème, par avance, je vous remercie de l'aide que vous me donnerez.
 
Bonjour,

Il faudrait passer par une feuille intermédiaire. Sur laquelle tu reconstitues tes listes de plages les unes à la suite des autres. Ensuite tu l'édites en pdf et tu effaces toutes les données de la feuille d'un coup (cells.clear).
Sans fichier difficile de t'aider.
Bonne journée.
 
Bonjour,

Tu m'as induit en erreur. En fin de compte, avec ta liste tu ne fais que de la mise en forme conditionnelle.
Je croyais que tu récupères des données d'une bd sur ta feuille de travail et que tu voulais ensuite éditer en pdf.
D'où ma proposition de regrouper tes tableaux, les uns sous les autres dans une autre feuille en vba et ensuite éditer en pdf.
Mais cela ne change pas tout, Sur une autre feuille à tester.
 

Pièces jointes

Bonjour,

Je vous remercie de l'aide que vous m'avez fournit, après plusieurs testes et réflexions, l'idée de transvaser les feuilles sur une autre les unes sous les autres est bien, mais j'ai fait autrement : dans ma boucle qui change ma liste, j'ai introduit, un bout de code qui crée une copie de la feuille vers un nouveau classeur, qui aura au final 27 feuilles, et l'impression du classeur une fois les 27 feuilles créées et copier vers ce classeur. C'est assez rapide, j'ai même mis un label qui indique l'avancement du processus grâce à la fonction "DoEvents" que j'ai découvert. Enfin ce nouveau classeur se ferme sans sauvegarde à la fin du procédé. Tout fonctionne parfaitement bien, si vous avez des conseils, des suggestions ou que vous souhaitez voir le fichier dans le but d'améliorer le processus, je suis preneur.

Merci encore du temps que vous avez prit pour m'éclairer.

Bonne soirée.
 
Bonjour,

Je vous remercie de l'aide que vous m'avez fournit, après plusieurs testes et réflexions, l'idée de transvaser les feuilles sur une autre les unes sous les autres est bien, mais j'ai fait autrement : dans ma boucle qui change ma liste, j'ai introduit, un bout de code qui crée une copie de la feuille vers un nouveau classeur, qui aura au final 27 feuilles, et l'impression du classeur une fois les 27 feuilles créées et copier vers ce classeur. C'est assez rapide, j'ai même mis un label qui indique l'avancement du processus grâce à la fonction "DoEvents" que j'ai découvert. Enfin ce nouveau classeur se ferme sans sauvegarde à la fin du procédé. Tout fonctionne parfaitement bien, si vous avez des conseils, des suggestions ou que vous souhaitez voir le fichier dans le but d'améliorer le processus, je suis preneur.

Merci encore du temps que vous avez prit pour m'éclairer.

Bonne soirée.
Bonsoir,

Content que tu aies résolu ton problème.
Cependant, tu oublies que c'est un forum d'entraide.
On est bien content qu'on soit aidé.
Tu aurais pu joindre ta solution pour en faire profiter les autres.
Pour info, dorénavant, je ne participerais plus aux discussions
des membres qui ne viennent que pour "traire" les membres
qui ont la gentillesse de consacré de leur temps pour aider.

Pas très correct!😡
 
Bonjour,

Pardonnez-moi du temps que je mes à répondre, je voulais mettre un fichier clair et sans noms. J'ai détaillé (peut-être trop) le processus. Pour ma part ça fonctionne bien. Je suis à votre disposition si vous avez un point que vous ne comprenez pas dans le procédé. Si vous avez des idées pour optimiser le processus n’hésitez pas.

P.S. : Il n'a y pas de bouton sur le feuille pour lancer l'userform.

Bonne fin de journée et bon week-end.
 

Pièces jointes

Bonjour,

Pardonnez-moi du temps que je mes à répondre, je voulais mettre un fichier clair et sans noms. J'ai détaillé (peut-être trop) le processus. Pour ma part ça fonctionne bien. Je suis à votre disposition si vous avez un point que vous ne comprenez pas dans le procédé. Si vous avez des idées pour optimiser le processus n’hésitez pas.

P.S. : Il n'a y pas de bouton sur le feuille pour lancer l'userform.

Bonne fin de journée et bon week-end.
Bonjour,
Je pense bien que tu n'as pas tout compris concernant le partage.
Tu viens de mettre juste un userform dans lequel tu sélectionnes les feuilles que tu veux éditer en pdf.
Ton partage est tronqué. Mais bon, chacun à sa conception du partage.
Pour ma part, j'essaie d'aider selon mes connaissances et je me fais d'aider sur ce merveilleux forum.
Libre à toi de faire profiter la communauté de tes discussions ou non.
Il serait dommage que je commence à mettre à jour la liste des utilisateurs à ignorer.
En effet, car j'ai horreur qu'on vienne sur le forum juste pour se faire servir...
Le partage ne signifie pas: "Super c'est exactement ce que je cherchais, au revoir et merci. A la prochaine vache à traire".
Franchement, certains forumeurs me déçoivent.
En protestation, je mets mon gilet jaune et me promets de bouder le forum durant une semaine.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
232
Retour