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

Bonsoir LeRevenant,

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

Tu veux enregister en 1.pdf 2.pdf 3.pdf etc?? Ce serait pas plutôt le noms des villes??

Crée dejà un dossier nommé PDF, plus simple. La suite... après une page de pub (Aaaahh! TF1 ;) )


A+ :cool:
 

Lone-wolf

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

Re LeRevenant,

Zut! La Pub est terminée :( ;)


Code:
Sub CreePdf()
Dim Chemin, Fichier, Rep As String
 
Rep = "C:\Users\" & Environ("username") & "\Desktop\PDF\"
Fichier = Sheets("PDF").Range("B4").Value
Chemin = Rep & Fich & ".pdf"
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminComplet, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
End Sub


A+ :cool:
 

LeRevenant

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

Salut, désolé d'avoir mis autant de temps pour répondre, je fais ça dans le cadre d'un stage (donc à 20h30 je suis pas connecté mdr). ^^

Bonsoir LeRevenant,
Tu veux enregister en 1.pdf 2.pdf 3.pdf etc?? Ce serait pas plutôt le noms des villes??

Effectivement, j'ai oublié de préciser ça: Il faudrait que chaque pdf s'appelle 1.pdf , 2.pdf , 3.pdf et enfin 4.pdf (et chaque PDF aurait la liste des noms des villes correspondantes).
Malheureusement, je viens de tester ta macro, quelque chose se passe, mais mon fichier PDF dans mon bureau ne se rempli pas :/

Si ça peut t'aider, je te donne le "lien" de mon fichier PDF: C:\Users\boo\Desktop\PDF

Merci beaucoup pour ton aide!
Bonne journée :)
 

LeRevenant

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

Re salut,

Voici la macro arrangée:
____________________________________________________
Dim Chemin, Fichier, Rep As String

Rep = "C:\Users\boo\Desktop\PDF\PDF.pdf"
Fichier = Sheets("PDF").Range("B4").Value
Chemin = Rep & Fich & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminComplet, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
______________________________________________________

Bonne nouvelle, elle crée un fichier, au bon endroit.
Seul hic, au lieu de créer [1.pdf] ; [2.pdf] ; [3.pdf] ; [4.pdf] (1;2;3;4 car ce sont les éléments de la liste déroulante).
Elle ne fait qu'un seul fichier [pdf].

Que faut il changer s'il vous plaît?
Merci
Bonne soirée
 

Lone-wolf

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

Re,

Rep = "C:\Users\boo\Desktop\PDF\PDF.pdf". Pourquoi un sous-dossier(en gras et surtout avec l'extension .pdf) ?! :confused:

Environ("username") fait référence à ton nom(système) .

Et est-ce tu change les valeurs de la liste? Qu'elle version d'Excel tu utilise?



A+ :cool:
 
Dernière édition:

Lone-wolf

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

Re,


voici la macro testée e fonctionnelle.

Code:
Sub CreePdf()
Dim Fichier, Rep As String
Feuil2.Activate
Rep = "C:\Users\" & Environ("username") & "\Desktop\PDF\"
Fichier = [B4].Value
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Rep & Fichier & ".pdf", _
             Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    From:=1, To:=1, OpenAfterPublish:=False
End Sub


Dossier-PDF.gif




A+ :cool:
 
Dernière édition:

LeRevenant

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

Salut,

Je t'avoue que je sais pas pourquoi je dois mettre /pdf/pdf
mais ça marche comme ça... (cherche pas, les ordis des entreprises ont des mystères mdr)

Je testerai ça et te tiens au jus :)

Merci
Bonne soirée.
 

LeRevenant

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

Salut,

Mauvaise nouvelle, si sur ma liste déroulante je suis sur la "3", alors il me crée que [3.pdf]. Alors qu'elle est supposée le faire pour chaque valeur de la liste déroulante.

Je pense avoir une idée pour te faciliter la tâche: La liste qu'il y a dans le menu déroulant, je peux la mettre dans un nouvel onglet "console", ça devrait être plus simple (c'est déjà le cas dans le vrai fichier). Je te donne donc le fichier. avec l'onglet console.

(Après ce que t'as fait reste très bien, il suffirait de le faire à la main 1 par 1, mais comme sur mon vrai fichier il y a plus de 20 directions régionales, ça risquerait de ressembler à du bricolage le fichier excel, mdr).

PS: y a pas moyen de lui donner le périmètre du pdf s'il te plaît? Par exemple B6:C20
PPS: J'utilise excel 2013 version pro.

Merci beaucoup.
Bonne journée
 

Pièces jointes

  • PDF.xlsm
    18.2 KB · Affichages: 53
  • PDF.xlsm
    18.2 KB · Affichages: 53

Lone-wolf

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

Re LeRevenant,

Brrrrrrr, tu me fais froid dans le dos, zè peu' .;)

Si je comprends bien, la liste sert pour le nombre de copies à éffectuer?

Et B6:C20 c'est la zone d'impression?


A+ :cool:
 

cathodique

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

Si tu ne veux pas avoir dans le fichier pdf la valeur de la liste déroulante, il suffit de la masquer et la démasquer.

une proposition
VB:
Option Explicit
Sub CreePdf()
    Dim Fichier As String, Rep As String
    Dim Plage As Range, Dl As Long, ligne As Byte

    With Sheets("pdf")
        Dl = .Range("A" & Rows.Count).End(xlUp).Row
        Set Plage = .Range("A6:A" & Dl)
        Rep = "C:\Users\" & Environ("username") & "\Desktop\PDF\"
        Fichier = [B4].Value
        .Rows(4).EntireRow.Hidden = True
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Rep & Fichier & ".pdf", _
                                        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                                        From:=1, To:=1, OpenAfterPublish:=False
        .Rows(4).EntireRow.Hidden = False

    End With
End Sub
J'espère que ça fera ton affaire.
 

LeRevenant

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

Re LeRevenant,

Brrrrrrr, tu me fais froid dans le dos, zè peu' .;)

What lol? je comp'en pas ce ke tu é en t'ain de di'e


Si je comprends bien, la liste sert pour le nombre de copies à éffectuer?
Oui car on a besoin d'un fichier PDF par "DR" (et on a DR1 ; DR 2 ; DR 3 ; DR 4 ...).
Après j'ai fait ça pour t'aider, si t'en as pas besoin, l'utilise pas.
Et B6:C20 c'est la zone d'impression?
Oui c'est ça ^^ J'avoue que je vais chercher des termes casse pieds mdr (Périmètre du PDF)

A+ :cool:
 

LeRevenant

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

Si tu ne veux pas avoir dans le fichier pdf la valeur de la liste déroulante, il suffit de la masquer et la démasquer.

une proposition
VB:
Option Explicit
Sub CreePdf()
    Dim Fichier As String, Rep As String
    Dim Plage As Range, Dl As Long, ligne As Byte

    With Sheets("pdf")
        Dl = .Range("A" & Rows.Count).End(xlUp).Row
        Set Plage = .Range("A6:A" & Dl)
        Rep = "C:\Users\" & Environ("username") & "\Desktop\PDF\"
        Fichier = [B4].Value
        .Rows(4).EntireRow.Hidden = True
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Rep & Fichier & ".pdf", _
                                        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                                        From:=1, To:=1, OpenAfterPublish:=False
        .Rows(4).EntireRow.Hidden = False

    End With
End Sub
J'espère que ça fera ton affaire.

Je suis vraiment désolé, l'idée est bonne mais dans le vrai fichier, on a juste besoin d'une partie de l'onglet, je vais pas tout masquer pour tout remettre... c'est plus pratique de lui donner la "zone de mise en page" directement.
 

cathodique

XLDnaute Barbatruc
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,
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
415

Statistiques des forums

Discussions
312 294
Messages
2 086 902
Membres
103 404
dernier inscrit
sultan87