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
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é