Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro, imprime en PDF, plusieurs fois 1 page avec data diff.

  • Initiateur de la discussion Initiateur de la discussion CFR
  • Date de début Date de début

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 !

CFR

XLDnaute Nouveau
Bonjour,
Je commence à utiliser excel de plus en plus mais, je suis assez amateur au niveau des macro et VBA.

Mon prob. est le suivant :

J'ai une feuille de reporting "report" où je change le titre d'une division et mes données se modifie. Pour l'exemple, j'ai inséré un simple RechercheV.
J'ai une autre feuille "table" ou se trouve le nom des divisions. J'ai inséré les valeurs la pour l'exemple.

J'aimerais faire imprimer en PDF la feuille "report" pour chaque numéro de division.

J'ai déjà une macro qui va chercher la première valeur dans la feuille "table", la copie à la bonne place dans la feuille "report" et fait imprimeren mode pdf que j'ai préalablement sélectionné. Le problème, c'est que c'est long et que j'ai 6 ligne de code que je copie pour chaque division en changeant la cellule qu'il copie à chaque fois. De plus, il me demande le nom de chaque fichier pdf...
J'aimerais qu'il prenne le nom de la division comme nom de fichier...

Je joint un petit fichier avec l'exemple. Il ne contient pas bcp, mais c'est le principe qui compte...J'utilise excel 2007 et PDF 9

Si vous connaissez une macro assez simple qui pourrait faire cela!!
Merci beaucoup d'avance
Frank
 

Pièces jointes

Dernière édition:
Re : Macro, imprime en PDF, plusieurs fois 1 page avec data diff.

Bon, après quelques essais je suis arrivé à la macro suivante:

Sub MakePDFNS()

Sheets("Table").Activate
Cells(1, 1).Select
For Each ligne In ActiveSheet.UsedRange
If ligne.Cells(1, 1).Value = "oui" Then
ligne.Cells(1, 2).Select
Selection.Copy
Sheets("Report").Activate
'colle
Cells(6, 3).Select
ActiveSheet.Paste
Application.CutCopyMode = False
'imprime
Filename = "C:\Documents and Settings\cotef\Bureau\PDF\" & ActiveSheet.Range("C1").Value & ".pdf"
SendKeys Filename & "{ENTER}", False
ActiveSheet.PrintOut Copies:=1, ActivePrinter:="Adobe PDF:", Collate:=True
End If

If ligne.Cells(1, 1).Value = "End" Then
Exit For
End If
Next
End Sub

Le problème c'est qu'il fait une erreur après la premiere impression.
L,erreur vient de cette ligne :
ligne.Cells(1, 2).Select

J'ai joint le fichier, merci d'avance
 

Pièces jointes

Re : Macro, imprime en PDF, plusieurs fois 1 page avec data diff.

Salut,

Il m'arrive de travailler de cette façon mais sans imprimer en pdf.

Pour la partie changement de données par contre j'ai plus rapide :

Principe : les données d'une division sont en ligne dans un autre classeur =>12 divisons = 12 lignes. Dans la feuille à imprimer : toutes les valeurs sont des liaisons à la feuille de données => donc toutes les liaisons ont le même N° de ligne. Une macro (enregistrée puis corrigée) remplace (dans la zone d'impression) toutes les formules contenant $2 par $3, imprime et boucle en remplaçant $3 par $4 etc jusque $12 puis on remet les valeurs à $2 sans imprimer et c'est fini. Avec 60 divisions il devient intéressant de faire un paramètre variable pour choisir les N° de ligne à imprimer.

Cordialement
 
Re : Macro, imprime en PDF, plusieurs fois 1 page avec data diff.

Je comprend ce que tu veux dire, le problème c'est que mon véritable fichier est énorme. Ma feuille de reporting sert pour plusieurs chose aussi. De plus je ne veut pas toujours imprimer toutes les divisions....

Mon problème se situe plus au niveau de l'impression sous PDF.
Je voudrais qu'il aille chercher le nom du fichier dans une cellule prédéfinie ex: C1. Le problème c'est que pour la première fois, ça fonctionne mais par la suite, il me demande un nom à chaque fois...


Voici ou j'en suis rendue avec la macro:


Sub MakePDFNS()


Sheets("table").Activate
Cells(1, 1).Select

For Each ligne In ActiveSheet.Rows
If ligne.Cells(1, 1).Value = "oui" Then
ligne.Cells(1, 2).Select
Selection.Copy
Sheets("report").Activate
'colle
Range("B6:B7").Select
ActiveSheet.Paste
Application.CutCopyMode = False
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 2
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
'imprime
Filename = "C:\Test\" & ActiveSheet.Range("C1").Value & ".pdf"
SendKeys Filename & "{ENTER}", False
ActiveSheet.PrintOut Copies:=1, ActivePrinter:="Adobe PDF sur Ne03:", Collate:=True
End If

If ligne.Cells(1, 1).Value = "End" Then
Exit For
End If
Sheets("table").Activate
Next

End Sub

La ligne en rouge qui sert pour le nom du fichier, marche la première fois, mais non les suivantes...
quelqu'un peut m'aider?
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…