Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

LeRevenant

XLDnaute Occasionnel
Bonjour,

Dans le fichier Excel joint, vous avez 2 onglets:
-Base de données : rien à toucher
-PDF: avec un menu déroulant avec des valeurs de 1 à 4, en fonction de ce que l'on rentre dans ce menu déroulant, une liste apparait.

Objectif: Faire une macro qui créé un fichier PDF pour chaque valeur du menu déroulant.

Encore merci pour tout! :)
Bonne soirée

PS: Le top du top serait de définir le périmètre du PDF, B6:C20 par exemple.
PPS: Juste pour l'info, ça serait bien aussi si on pouvait défini à l'avance l'emplacement des PDF, dans le bureau, dans un fichier qui s'appelle "PDF" (trop d'imagination mdr).
 

Pièces jointes

  • PDF.xlsm
    10.8 KB · Affichages: 61
  • PDF.xlsm
    10.8 KB · Affichages: 62

Lone-wolf

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Re,

Pour l'impression, il te suffit de faire la mise en page et mettre en état les sauts de page, celà ne dois pas être compliquer j'éspère?!.


A+ : cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Re,

@cathodique: pourquoi la masquer ? Il suffit de selectionner la cellule et la déplacer hors zone d'impression.


Au Revenant ;) : pourquoi masquer la colonne A? tu prend les cellules, les déplaces en colonne I par exemple et si ça gêne, tu met blanc comme couleur du texte. C'est tout bête.


A+ :cool:
 

LeRevenant

XLDnaute Occasionnel
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Oups! je crois que n'as pas compris ce que fait le code.

Ce n'est pas à toi de masquer et démasquer manuellement. c'est le code qui le fait à ta place.

Et il ne masque que la ligne 4, c'est à dire celle qui contient la liste déroulante.

De plus tu as une plage dynamique, qui s'ajuste au nombre de lignes que tu as en colonne A.

Apparemment, tu n'as pas testé le code. Mais, bon.

Sinon, je n'ai pas compris tes attentes.

Cordialement,

J'ai très bien compris ce que fait ta macro, mais cette macro sera imbriquée dans une autre macro, si je dois m'amuser à masquer toutes les colonnes et les lignes inutiles, elle mettra 10 plombes à tourner.... Il faut que je fasse quelque chose le plus automatique que possible.
 

LeRevenant

XLDnaute Occasionnel
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Re,

Pour l'impression, il te suffit de faire la mise en page et mettre en état les sauts de page, celà ne dois pas être compliquer j'éspère?!.


A+ : cool:

ça le fera pour chaque pdf? y aura pas besoin de le redéfinir? bon bah cool alors :)
Oui t'as raison, oublie ce truc de définition de périmètre
 

LeRevenant

XLDnaute Occasionnel
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Re,


Au Revenant ;) : pourquoi masquer la colonne A? tu prend les cellules, les déplaces en colonne I par exemple et si ça gêne, tu met blanc comme couleur du texte. C'est tout bête.


A+ :cool:
What, quand est ce que j'ai parlé de masquer la colonne A?
Le seul problème que j'ai est que la macro ne crée qu'un seul fichier PDF :/ alors qu'elle devrait faire les 4 ...
M'voyez? (référence à south park pour ceux qui connaissent pas ^^)
 

cathodique

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

@cathodique: pourquoi la masquer ? Il suffit de selectionner la cellule et la déplacer hors zone d'impression.
y a quelque chose qui m'échappe. Vous faites un travail classique sur excel (manuellement) ou par code.

Quelle différence entre masquer ou déplacer hors de la zone d'impression, pour le résultat final "editer en pdf".

Pas compris alors les tenants et les aboutissants de cette discussion.

Bon courage pour la suite.
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Re à tous,


Bon là sa me tape sur le système(Le mien, pas celui de l'ordi :mad: ;) )

Voici la macro encore une fois modifiée


Code:
Sub CreePdf()
Dim Chemin, Nom As String, NbCopies As Long
Feuil2.Activate
Chemin = "C:\Users\" & Environ("username") & "\Desktop\PDF\"
With ActiveSheet
NbCopies = .Range("e2")
num = 0
For i = 1 To NbCopies
num = num + 1
Next i
Nom = "DR " & num
End With

        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Nom & ".pdf", _
             Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    From:=1, to:=1, Copies:=NbCopies, OpenAfterPublish:=False
End Sub

Pourquoi maintenant j'obtiens même avec l'ancien code cette sal..... d'erreur d'éxecution 1004 quand j'exporte au format pdf ? :mad:



A+ :cool:
 
Dernière édition:

LeRevenant

XLDnaute Occasionnel
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

y a quelque chose qui m'échappe. Vous faites un travail classique sur excel (manuellement) ou par code.
On fait en sorte qu'une tâche rébarbative soit réalisée par VBA.

Quelle différence entre masquer ou déplacer hors de la zone d'impression, pour le résultat final "editer en pdf".
Laisse tomber pour la zone d'impression.
Pas compris alors les tenants et les aboutissants de cette discussion.

On a une macro qui met sous forme de PDF un seul fichier, or il serait bien si elle pouvait faire les 4 en un coup (les 4 valeurs du menu déroulant).

Voila tout
Encore merci :)
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Re,

En image, l'erreur

erreur.gif


Et voici ce que ça donne une fois faite la mise en page.

impression.gif


A+ :cool:
 

Pièces jointes

  • erreur.gif
    erreur.gif
    13.1 KB · Affichages: 43

cathodique

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

On a une macro qui met sous forme de PDF un seul fichier, or il serait bien si elle pouvait faire les 4 en un coup (les 4 valeurs du menu déroulant).
sincèrement, je suis un dur à la détente.
Je ne comprends pas:
1- où est la macro?
2- si tu veux un seul fichier pdf, alors pourquoi utiliser une liste déroulante.

Voici comment j'avais compris:
via sélection en cellule A4, une liste s'affiche suivant ce critère à partir de la cellule A6
et de là on exécute la macro qui crée un fichier pdf dont le nom est le critère (valeur en A4) et que sur le fichier pdf la cellule A4 n'apparaisse pas (d'où le masquage/démasquage de la ligne4); c-à-d créer un fichier par valeur de la liste de validation.

Il serait peut-être judicieux de nous faire voir ton fichier de départ et le résultat désiré. vu le peu de données présentent dans ton fichier joint, tu peux le faire en manuel ça sera plus clair.

Pour le moment, je dois partir. à ce soir.
 

LeRevenant

XLDnaute Occasionnel
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

sincèrement, je suis un dur à la détente.
Je ne comprends pas:
1- où est la macro?
2- si tu veux un seul fichier pdf, alors pourquoi utiliser une liste déroulante.
1-La macro est dans "affichage"=>"Macro"=>"Afficher la macro"
Regarde son excel, pas le mien, sur excel je ne sais pas coder sous vba :/ (je sais faire du bricolage c'est tout)
2-Justement, je veux plusieurs PDF, mais à l'heure actuelle, la macro n'en fait qu'un seul....

Voici comment j'avais compris:
créer un fichier par valeur de la liste de validation.

Juste ça ^^

À ce soir alors.

@Lone-wof:pS: j'ai jeté un p'tit coup d'oeil sur ce que t'as écrit dans ta macro, c'est pas la peine d'écrire DR, car des fois dans le menu déroulant il y aura des DR et des fois des noms de directeurs immobilier. C'est vraiment un détail le nom du PDF, si on arrive à avoir [1.pdf] [2.pdf] [3.pdf] [Justin Bridou.pdf] ça sera génial ^^
 
Dernière modification par un modérateur:

Lone-wolf

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Rebonjour a tous,

j'ai trouvé d'où venais l'erreur. J'avais ajouté Copies:= NbCopies et c'est cette connerie qui causait problème.

Au Revenant: et voilà comment on obtient DR 1.pdf à DR 4.pdf . À placer dans un module et tester.


Code:
Public Chemin, Nom As String, NbCopies As Long, num As Integer, t

Sub CreePdf()
Chemin = "C:\Users\" & Environ("username") & "\Desktop\PDF\"
Feuil2.Activate
NbCopies = ActiveSheet.Range("b4") 
num = 0
For i = 1 To NbCopies
num = num + 1
Nom = "DR " & num & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Nom, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
t = Timer + 2.5: Do Until Timer > t: DoEvents: Loop
Next i
End Sub


A+ :cool:
 
Dernière édition:

LeRevenant

XLDnaute Occasionnel
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

Rebonjour a tous,

j'ai trouvé d'où venais l'erreur. J'avais ajouté Copies:= NbCopies et c'est cette connerie qui causait problème.

Au Revenant: et voilà comment on obtient DR 1.pdf à DR 4.pdf . À placer dans un module et tester.
J'ai testé et tout comme les précédentes macros... ça ne fait qu'un seul PDF (si j'ai 3 en b4, il sort [DR 3.pdf]
Malheureusement tu t'es cassé les pieds pour rien avec le nom (en rajoutant "DR") car dans le vrai fichier excel, il y a les DR et des directeurs immobiliers, donc ça ferait DR [justin bridou.pdf] ce qui n'est pas top mdr.

Je comprends vraiment pas pourquoi ta macro ne marche pas
t'as mis "next i" "loop" et tu dis de commencer à 0... what is the phoque?

Merci
Bonne soirée.
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro qui créé un PDF pour toutes les valeurs d'un menu déroulant

t'as mis "next i" "loop" et tu dis de commencer à 0... what is the phoque?

Bein oui. Par-ce que si tu met 1 num devient 1 et en l'incrémentant ça vas faire 2 ( num(1)+num(1) = 2). Tu comprends?

Le t = Timer, je l'ai mis pour avoir un temps entre chaque création des fichiers.


@cathodique: ça serait mieux d'automatiser tout celà. Cliquer 4 fois ça va; mais imagine qu'il passe à la vitesse supérieure, et qu'il en a 100 ou plus...





A+ :cool:
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
416

Statistiques des forums

Discussions
312 298
Messages
2 086 977
Membres
103 416
dernier inscrit
SEB28110