Macro pour imprimer en PDF

Bonjour à tous.

J'ai essayé de chercher, mais j'ai encore un peu de peine à y comprendre quelque chose avec les macros. Alors si l'un de vous peut m'aider, c'est avec grand plaisir.

J'ai un classeur Excel avec une feuille (Détail Dessin) dans laquelle j'ai une liste déroulante.

J'ai une macro qui fonctionne très bien pour enregistrer chaque entrée de ma liste déroulante en PDF.

Le soucis, c'est que ça m'enregistre mes PDF un peu n'importe où sur mon serveur.

Je voudrai savoir s'il est possible d'intégrer une entrée pour enregistrer mes PDF à un endroit précis.

Le chemin serait le suivant : /Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/XXX

XXX représente le nom du PDF, à savoir Prénom et Nom (cellule D2)

Je joints le fichier pour le cas où.

Merci d'avance et bonne journée.

Anita

1'201utilisateurs-2016.xlsm (111.05 Ko)

Bonjour, oui ce doit être ici dans filename :

Feuil1.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\xxxxx\Documents\dc\" & Range("D2") & ".pdf"

Dans l'exemple j'ai enregistré le pdf dans mes documents, dans le dossier DC...

Bonjour.

Je ne sais pas si c'est parce que je suis sur MAC, mais ça ne fonctionne pas.

D'abord, il refus mon chemin d'accès (est-ce parce que mon chemin d'accès possède des espaces ?)

Puis, je tente en donnant comme chemin d'accès mon bureau.

Là, je peux sortir de l'éditeur.

Mais au moment de cliquer sur le bouton "Enregistrer" pour activer ma macro, il m'affiche une fenêtre de bug.

Une idée ?

Votre chemin n'est probablement pas bien orthographié.

Cause probable --> les mauvais slash sont employés (sauf si sur mac c'est différent de windows) les votres sont comme ceci "/" les miens comme ceci "\". ensuite observez la syntaxe que je vous ai donné et comparez avec la votre.

"C:\Users\xxxxx\Documents\dc\" & Range("D2") & ".pdf"

(En bleu le chemin d'accès au dossier et en rouge, le nom du fichier)

/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/xxxx

Bonjour.

Alors j'ai testé, et on va dire que cela fonctionne à moitié...

Mon erreur venait que j'avais oublié un "&" dans le code.

Mais en reproduisant ton code, mon fichier s'enregistre toujours au même endroit que précédemment, et il s'appelle :

/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/Anita Eicher.pdf

Ce que j'aimerai, c'est que mon fichier s'enregistre sous le dossier :

/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/

Et qu'il s'appelle : Anita Eicher.pdf

J'ai testé ceci, mais ça ne fonctionne pas...

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Chemin:="/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/", Filename:=Range("D2") & ".pdf"

Dans mes recherches, j'ai vu des codes qui possèdent des entrées du genre :

Dim Fname as String, Chemin as String

Mais pour moi, tout cela est encore très flou...

Mon code actuel est le suivant :

    Range("A4:U50").Select
    ActiveSheet.PageSetup.PrintArea = "$A$4:$U$50"
    choix = MsgBox("Imprimer tout ?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "ImpressionDessin")
    If choix = vbCancel Then Exit Sub
    If choix = vbNo Then
        ' imprimer feuille
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Range("D2") & ".pdf"
        ActiveSheet.PageSetup.PrintArea = ""
    Else
        ' imprimer tout
        Application.ScreenUpdating = False
        savSelection = [D2]
        For Each c In [DonnéesDessin[Clé]]
            [D2] = c.Value
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Range("D2") & ".pdf"
        Next c
        [D2] = savSelection
    End If
    ActiveSheet.PageSetup.PrintArea = ""
End Sub

Pour utiliser une variable avec l'adresse de destination vous pouvez faire comme ceci :

Dim chemin$ 'déclaration d'un lieu de stockage de type "texte"

chemin = "/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/" 'stockage de l'adresse où doit être enregistré le fichier
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf" 'Création du fichier à l'adresse de stockage

Y a un truc que je ne dois pas faire juste.

J'ai une erreur à la ligne

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf"

Alors je me suis dis qu'il fallait que cette ligne soit remplie de cette manière :

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/" & ActiveSheet.Range("D2") & ".pdf"

Mais ça ne marche pas non plus.

J'essaie de diverses manières, et j'aimerai vraiment comprendre où je fais une erreur pour devenir un peu meilleure dans les VBA...

Je suis vraiment désolée de ne pas réussir à comprendre et appliquer une ligne de code qui parait pourtant simple.

Ci-dessous mon code avec l'ajout de le mention "Dim chemin$"

Sub DessinImprimerPDF()
    Dim chemin$
    chemin = "/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/"
    Range("A4:U50").Select
    ActiveSheet.PageSetup.PrintArea = "$A$4:$U$50"
    choix = MsgBox("Imprimer tout ?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "ImpressionDessin")
    If choix = vbCancel Then Exit Sub
    If choix = vbNo Then
        ' imprimer feuille
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf"
        ActiveSheet.PageSetup.PrintArea = ""
    Else
        ' imprimer tout
        Application.ScreenUpdating = False
        savSelection = [D2]
        For Each c In [DonnéesDessin[Clé]]
            [D2] = c.Value
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf"
        Next c
        [D2] = savSelection
    End If
    ActiveSheet.PageSetup.PrintArea = ""
End Sub

Salut

essayes avec ce code

    Sub DessinImprimerPDF()
        Dim chemin As String
        chemin = "\Volumes\SERVEUR-ADMIN\017 REFERENT\07 Gestion d'utilisateurs\01 Rapport annuel\2016\Dessin\"
        Range("A4:U50").Select
        ActiveSheet.PageSetup.PrintArea = "$A$4:$U$50"
        choix = MsgBox("Imprimer tout ?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "ImpressionDessin")
        If choix = vbCancel Then Exit Sub
        If choix = vbNo Then
            ' imprimer feuille
           ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf"
            ActiveSheet.PageSetup.PrintArea = ""
        Else
            ' imprimer tout
           Application.ScreenUpdating = False
            savSelection = [D2]
            For Each c In [DonnéesDessin[Clé]]
                [D2] = c.Value
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf"
            Next c
            [D2] = savSelection
        End If
        ActiveSheet.PageSetup.PrintArea = ""
    End Sub

quand tu fais "non" a ton msgbox ca marche par contre je comprend pas trop l'intéret ni le but de ta boucle

si tu fais "oui" ta boucle est error

Bonjour,

De cette manière, il n'y a plus de bug, mais mon PDF s'appelle :

/Volumes/SERVEUR-ADMIN/017 REFERENT/07 Gestion d'utilisateurs/01 Rapport annuel/2016/Dessin/Anita Eicher.pdf

Et il s'enregistre toujours au même emplacement que là où est enregistrer mon fichier excel.

Donc, ce n'est pas ça. Je poursuis mes recherches en espérant trouver la solution.

Bonjour, dans la variable chemin, essayez (a tout hasard) de remplacer les "/" par les deux points ":" ...

Je ne sais pas ce que ça vaut mais j'ai lu ça sur un forum

http://forums.macg.co/threads/probleme-avec-une-macro-vba-excel-entre-pc-et-mac.1257573/

RE ...

Il faut que tu changes ton repertoire par defaut

avec changefileopendirectory

    Sub DessinImprimerPDF()
        Dim chemin As String
        chemin = "\Volumes\SERVEUR-ADMIN\017 REFERENT\07 Gestion d'utilisateurs\01 Rapport annuel\2016\Dessin\"
        Range("A4:U50").Select
        ActiveSheet.PageSetup.PrintArea = "$A$4:$U$50"
        choix = MsgBox("Imprimer tout ?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "ImpressionDessin")
        If choix = vbCancel Then Exit Sub
        If choix = vbNo Then
            ' imprimer feuille
ChangeFileOpenDirectory (Chemin)
          ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf"
            ActiveSheet.PageSetup.PrintArea = ""
        Else
            ' imprimer tout
          Application.ScreenUpdating = False
            savSelection = [D2]
            For Each c In [DonnéesDessin[Clé]]
                [D2] = c.Value
ChDir (chemin)
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & ActiveSheet.Range("D2") & ".pdf"
            Next c
            [D2] = savSelection
        End If
        ActiveSheet.PageSetup.PrintArea = ""
    End Sub

chez moi ca marche très bien


Ajoutes

Chdir (chemin)

au debut après la declaration de chemin, ca devrait marcher

Maintenant il me dit "Sub ou Function non définie"

Le titre de ma macro Sub DessinImprimerPDF() et surligné en jaune et ChangeFileOpenDirectory et sélectionné.

Mais je ne perds pas espoir...

En mélangeant tout ce que j'ai pu trouvé et les conseils que vous m'avez donné, j'y suis arrivée.

Au début de mon code, j'ai précisé comment je voulais nommer mon fichier :

    Fichier = Range("D2") & ".pdf"

Puis où je voulais l'enregistrer :

    Dossier = "Volumes:SERVEUR-ADMIN:017 REFERENT:07 Gestion d'utilisateurs:01 Rapport annuel:2016:Dessin:"

Etant sur MAC, j'ai essayé de remplacé / par :

Puis je crée le "raccourci" suivant:

    Chemin = Dossier & Fichier

Un peu plus loin, il y a cette fameuse ligne qui m'a posé de nombreux problème...

A la suite de Filename:=

j'ai indiqué Chemin

        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin

Ma feuille active s'enregistre en PDF, avec le nom que j'ai choisi et dans le répertoire que j'ai choisi.

Je suis fière d'y être arrivée et vous remercie tous, car grace à vous, je m'améliore un peu plus.

Le code complet :

Sub DessinImprimerPDF()
    Fichier = Range("D2") & ".pdf"
    Dossier = "Volumes:SERVEUR-ADMIN:017 REFERENT:07 Gestion d'utilisateurs:01 Rapport annuel:2016:Dessin:"
    Chemin = Dossier & Fichier

    ActiveSheet.PageSetup.PrintArea = "$A$4:$U$50"
    choix = MsgBox("Imprimer tout ?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "ImpressionDessin")
    If choix = vbCancel Then Exit Sub
    If choix = vbNo Then
        ' imprimer feuille
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin
        ActiveSheet.PageSetup.PrintArea = ""
    Else
        ' imprimer tout
        Application.ScreenUpdating = False
        savSelection = [D2]
        For Each c In [DonnéesDessin[Clé]]
            [D2] = c.Value
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin
        Next c
        [D2] = savSelection
    End If
    ActiveSheet.PageSetup.PrintArea = ""
End Sub

Merci également à vous pour votre confiance et votre fidélité

Rechercher des sujets similaires à "macro imprimer pdf"