Macro excel: exporter en pdf à chaque saut de page
hogun06
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Bonjour,
J'ai besoin d'un coup de main pour écrire une macro pour créer un pdf à chaque saut de page à partir d'un fichier Excel.
J'ai un fichier Excel sur lequel je fait un sous total en fonction de la colonne B avec un saut de page à chaque changement de valeur (pour l'instant j'ai réussi à faire ma macro).
Le fichier en question peut contenir jusqu'à plus de 3000 lignes, avec sur ma fameuse colonne B une liste de noms, chaque nom s'étend sur une 40aine de lignes en moyenne.
Ça se présente donc sous la forme:
NomA
NomA
NomB
NomB
NomB
etc...
Comment puis-je faire pour exporter chaque page ainsi créé vers un fichier pdf (avec si possible un nom en fonction de la valeur se trouvant dans la colonne B) ?
Merci pour votre aide.
Bonjour,
J'ai besoin d'un coup de main pour écrire une macro pour créer un pdf à chaque saut de page à partir d'un fichier Excel.
J'ai un fichier Excel sur lequel je fait un sous total en fonction de la colonne B avec un saut de page à chaque changement de valeur (pour l'instant j'ai réussi à faire ma macro).
Le fichier en question peut contenir jusqu'à plus de 3000 lignes, avec sur ma fameuse colonne B une liste de noms, chaque nom s'étend sur une 40aine de lignes en moyenne.
Ça se présente donc sous la forme:
NomA
NomA
NomB
NomB
NomB
etc...
Comment puis-je faire pour exporter chaque page ainsi créé vers un fichier pdf (avec si possible un nom en fonction de la valeur se trouvant dans la colonne B) ?
Merci pour votre aide.
A voir également:
- Vba exporter en pdf
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
5 réponses
Bonjour,
Comme tu pratiques vba, je te donne la séquence pour sauvegarder ta page en PDF :
Tu remplace B1 par la cellule concernée dans ta page.
Comme tu pratiques vba, je te donne la séquence pour sauvegarder ta page en PDF :
Dim rep As String rep = "ton répertoire\" Range("A1:I5").Copy ' page à sélectionner Workbooks.Add ActiveSheet.Paste ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=rep & [B1].Value & ".PDF", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=False ActiveWorkbook.Close SaveChanges:=False
Tu remplace B1 par la cellule concernée dans ta page.
Bonjour gbinforme et merci pour ta réponse.
Malheureusement cela ne sera pas suffisant pour ce que je cherche à faire car je dois faire cette extraction pour chacune de pages ainsi générées (et pas seulement à la fois).
De plus l'idée de créer une nouvelle feuille excel à chaque fois puis la refermer risque de rendre la macro trop lourde pour être intéressante non?
N'y a t'il pas moyen de créer une boucle pour cela (là on dépasse mes compétences en vba).
Malheureusement cela ne sera pas suffisant pour ce que je cherche à faire car je dois faire cette extraction pour chacune de pages ainsi générées (et pas seulement à la fois).
De plus l'idée de créer une nouvelle feuille excel à chaque fois puis la refermer risque de rendre la macro trop lourde pour être intéressante non?
N'y a t'il pas moyen de créer une boucle pour cela (là on dépasse mes compétences en vba).
Bonjour hogun06,
l'idée de créer une nouvelle feuille excel à chaque fois puis la refermer risque de rendre la macro trop lourde
Tu veux créer un PDF par page, comment veux-tu le faire sans en générer la structure ?
Cette feuille ne sert que de support à la sauvegarde du PDF, si tu as une idée plus lumineuse, je veux bien t'aider à la coder.
Ta centaine de PDF que tu veux créer est-elle dans le même répertoire que ton classeur ?
N'y a t'il pas moyen de créer une boucle pour cela
Bien sûr qu'il faut créer une boucle, mais pour cela il faut avoir la connaissance de la structure de tes données.
Si tu pouvais nous mettre un exemple de classeur avec la structure des données, sans éléments personnels mais avec ta macro actuelle, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
l'idée de créer une nouvelle feuille excel à chaque fois puis la refermer risque de rendre la macro trop lourde
Tu veux créer un PDF par page, comment veux-tu le faire sans en générer la structure ?
Cette feuille ne sert que de support à la sauvegarde du PDF, si tu as une idée plus lumineuse, je veux bien t'aider à la coder.
Ta centaine de PDF que tu veux créer est-elle dans le même répertoire que ton classeur ?
N'y a t'il pas moyen de créer une boucle pour cela
Bien sûr qu'il faut créer une boucle, mais pour cela il faut avoir la connaissance de la structure de tes données.
Si tu pouvais nous mettre un exemple de classeur avec la structure des données, sans éléments personnels mais avec ta macro actuelle, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
Bonsoir gbinforme, désolé soirée chargée d'où la réponse tardive.
En fait pour créer ma "structure" de pages j'utilise l'instruction "Pagebreaks=true" dans ma fonction de sous-total (issu d'un enregistrement de macro).
Tu verras dans le fichier joint: https://www.cjoint.com/?DBywCYxkO5t
J'ai simplifié au maximum en ne prenant que 3-4 noms (et modifiant les infos) histoire de pouvoir travailler sur un fichier plus "léger" que celui d'origine. Ca me permet de faire des tests sans risquer perdre des données.
J'y ai mis deux macros:
la première qui me fait mes sous-totaux comme indiqué plus haut dans le topic.
Une seconde où j'ai tenté une boucle (je débute en vba alors ne sois pas trop regardant sur la qualité du code...) mais j'échoue lamentablement à afficher mon sous-total dedans (probablement une déclaration qui m'échappe).
Encore un grand merci de t'être penché sur mon problème.
Si tu as d'autres questions n'hésites pas.
En fait pour créer ma "structure" de pages j'utilise l'instruction "Pagebreaks=true" dans ma fonction de sous-total (issu d'un enregistrement de macro).
Tu verras dans le fichier joint: https://www.cjoint.com/?DBywCYxkO5t
J'ai simplifié au maximum en ne prenant que 3-4 noms (et modifiant les infos) histoire de pouvoir travailler sur un fichier plus "léger" que celui d'origine. Ca me permet de faire des tests sans risquer perdre des données.
J'y ai mis deux macros:
la première qui me fait mes sous-totaux comme indiqué plus haut dans le topic.
Une seconde où j'ai tenté une boucle (je débute en vba alors ne sois pas trop regardant sur la qualité du code...) mais j'échoue lamentablement à afficher mon sous-total dedans (probablement une déclaration qui m'échappe).
Encore un grand merci de t'être penché sur mon problème.
Si tu as d'autres questions n'hésites pas.
Bonjour,
Je t'ai laissé tes macros et avec celle qui fonctionnait j'ai rajouté :
- la saisie de la date choisie (à saisir comme date : j/m/aa)
- la sélection du répertoire des PDF
(tu peux le créer avec la fenêtre : nouveau dossier)
- la création des PDF sélectionnés avec le titre pour chacun, le nom de la colonne B et la mise en page paysage ligne complète
- un bouton pour lancer la macro
https://www.cjoint.com/c/DBzxJyvmpbR
Ton classeur test est parfaitement constitué puisque l'on peut tester 2 dates et 1 ou 3 PDF.
Bon test
Je t'ai laissé tes macros et avec celle qui fonctionnait j'ai rajouté :
- la saisie de la date choisie (à saisir comme date : j/m/aa)
- la sélection du répertoire des PDF
(tu peux le créer avec la fenêtre : nouveau dossier)
- la création des PDF sélectionnés avec le titre pour chacun, le nom de la colonne B et la mise en page paysage ligne complète
- un bouton pour lancer la macro
https://www.cjoint.com/c/DBzxJyvmpbR
Ton classeur test est parfaitement constitué puisque l'on peut tester 2 dates et 1 ou 3 PDF.
Bon test
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question