XL 2010 Imprimer en PDF plusieurs feuilles en boucle

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

  • Liste garderie - étude.xlsm
    55 KB · Affichages: 35

cp4

XLDnaute Barbatruc
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:

frederic1994

XLDnaute Nouveau
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.
 

cathodique

XLDnaute Barbatruc
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
 

frederic1994

XLDnaute Nouveau
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.
 

cp4

XLDnaute Barbatruc
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.
 

cp4

XLDnaute Barbatruc
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

  • Copie de Liste garderie - étude-5.xlsm
    106.4 KB · Affichages: 28

frederic1994

XLDnaute Nouveau
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.
 

cathodique

XLDnaute Barbatruc
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!:mad:
 

frederic1994

XLDnaute Nouveau
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

  • Plusieurs fois même feuille imprimer PDF.xlsm
    72.1 KB · Affichages: 44

cp4

XLDnaute Barbatruc
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 078
Messages
2 085 111
Membres
102 783
dernier inscrit
Basoje