Enregistrer en pdf sur bureau quel que soit l'utilisateur

Bonjour à tous,

j'ai un fichier excel 2010 utilisé sous Windows 7.

J'ai fait une macro pour enregistrer le fichier au format pdf sur le bureau :

Sub Macropdf()
'
' Macropdf Macro
'

'
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\Profiles_dupont\Users\gerard\Desktop\Haute saison v2.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    Application.WindowState = xlMinimized
    Application.WindowState = xlNormal
End Sub

Cependant, lorsque j'exécute la macro sur un autre ordinateur, le chemin d'accès n'est pas trouvé. Car personne d'autre n'a gerard comme nom d'utilisateur.

Comment faire pour que, le fichier soit de toute façon sauvegardé sur le bureau peu importe l'utilisateur ?

Question subsidiaire : comment faire pour que le nom par défaut du fichier pdf intègre le texte d'une cellule susceptible d'être modifiée ?

Merci d'avance,

tu peux essayer de remplacer "gerard" par %username%

c'est une idée. j'y connais rien en vba mais en administration serveur c'est cette valeur que l'on rentre pour avoir une fonctionnalité sur plusieurs comptes utilisateurs

Bonjour Dargoll,

merci pour ton aide.

Malheureusement, %username% ne marche pas.

j'ai essayé avec et sans le sigle %.

Merci quand même !

A+

je laisse la chance aux autres alors, lol

Petite précision : les personnes qui utiliseront ce fichier ont toutes Windows 7 et Office 10.

ça change peut être quelque chose dans le chemin d'accès du fichier?...

Bonjour à tous,

Essaie avec ceci :

"D:\Profiles_dupont\Users\" & Environ("username") & "\Desktop\Haute saison v2.pdf"

Bonjour VBA new,

ça marche. C'est extra !!

MERCI !

A bientôt,

Bonjour !

Ce post m'a été très utile, dans le sens où ce code est réellement pratique !

J'ai voulu l'essayer en l'associant à un bouton placé sur une de mes pages d'une des feuilles de mon classeur. Ca marche très bien, mais mes attentes n'ont pas été comblées... En effet, je constate que cette action me convertit uniquement la feuille sur laquelle j'ai placé le bouton.. Peut-on modifier le code pour obtenir une conversion de tout le document (toutes les feuilles donc) ?

Merci d'avance !

Re m@tix,

Essaie en changeant la ligne :

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

par

ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

Super, c'est exactement ça !! Merci beaucoup.

Un regret tout de même: les liens hypertextes de mon sommaire renvoyant vers les différentes feuilles deviennent inactifs sur le pdf géréné... Un moyen de contourner ceci à tout hasard ?

Pour ma part, je ne sais pas comment faire

Je poursuis avec une autre petite question: peut-on modifier le code de telle sorte que le fichier pdf prenne le même nom que le fichier word ? Ou au pire des cas, qu'une invite incite l'utilisateur à entrer un nom de fichier au lieu de l'imposer dans le code ?

m@tix a écrit :

le même nom que le fichier word

Le fichier excel tu veux dire ?

Un solution avec le même nom que le fichier excel :

Sub Macropdf()
Dim nomFichier As String
nomFichier = IIf(InStr(ThisWorkbook.Name, ".") > 0, Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1), ThisWorkbook.Name)

   ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\Profiles_dupont\Users\" & Environ("username") & "\Desktop\" & nomFichier & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

Une autre avec une invite :

Sub Macropdf_Invite()
Dim nomFichier As String
'on affiche une boîte de dialogue invitant à entrer un nom de fichier
nomFichier = Application.InputBox("Entre un nom de fichier", "Nom fichier", Type:=2)

   ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\Profiles_dupont\Users\" & Environ("username") & "\Desktop\" & nomFichier & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

Impeccable, les deux fonctionnent parfaitement ! Va falloir que je me décide à me plonger dans le VBA... C'est drôlement pratique !

Juste par curiosité, j'ai remarqué dans le deuxième que lorsqu'on met "Annuler" suite à l'invite, on génère par défaut un pdf nommé "faux". Comment paramètre-t-on cela ? Par exemple, si je voulais qu'il prenne le nom du fichier Excel ( )à la place ?

En tout cas, encore une fois, merci !

Avec gestion du bouton annuler :

Sub Macropdf_Invite()
'on affiche une boîte de dialogue invitant à entrer un nom de fichier
nomFichier = Application.InputBox("Entre un nom de fichier", "Nom fichier", Type:=2)

If VarType(nomFichier) = vbBoolean Then
    nomFichier = IIf(InStr(ThisWorkbook.Name, ".") > 0, Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1), ThisWorkbook.Name)
End If

   ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\Profiles_dupont\Users\" & Environ("username") & "\Desktop\" & nomFichier & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

Il-y-a du niveau...

Merci pour tous ces bons conseils !

Super ! A quel endroit du code as-tu "dit" quel nom tu voulais mettre dans le cas où l'utilisateur choisit de mettre annuler ?

D'ailleurs (désolé pour ces rallonges de questions ^^), ne serait-il pas mieux de ne pas faire de conversion pdf en cliquant sur annuler ?

m@tix a écrit :

Super ! A quel endroit du code as-tu "dit" quel nom tu voulais mettre dans le cas où l'utilisateur choisit de mettre annuler ?

C'est là :
If VarType(nomFichier) = vbBoolean Then
    nomFichier = IIf(InStr(ThisWorkbook.Name, ".") > 0, Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1), ThisWorkbook.Name)
End If

Lorsque tu cliques sur annuler, la variable nomFichier est à Faux. Donc si tu cliques sur annuler, c'est le nom du fichier excel qui est utilisé. Le traitement IIf(InStr(ThisWorkbook.Name, ".") > 0... que je fais est pour supprimer l'extension du nom du fichier.

m@tix a écrit :

D'ailleurs (désolé pour ces rallonges de questions ^^), ne serait-il pas mieux de ne pas faire de conversion pdf en cliquant sur annuler ?

Ça c'est toi qui vois, tu veux faire quoi à la place ? Rien ?

-- 01 Juil 2011 11:41 --

Bonjour pierre

Donc vbBoolean signifie "faux" ?

Et bien, si ça ne t'ennuie pas (je le comprendrais ), j'aimerais bien savoir comment "ne rien faire" oui !

m@tix a écrit :

Donc vbBoolean signifie "faux" ?

Non, le test
If VarType(nomFichier) = vbBoolean Then

teste le type de variable qui est retourné. Si tu cliques sur Annuler, ça te retourne faux qui est un booléen -> d'où vbBoolean.

m@tix a écrit :

Et bien, si ça ne t'ennuie pas (je le comprendrais ), j'aimerais bien savoir comment "ne rien faire" oui !

Y'a pas de souci, j'ai pas trop à réfléchir, juste à traduire en VBA ta demande ! Donc il suffit juste de sortir de la macro en remplaçant ça :
If VarType(nomFichier) = vbBoolean Then
    nomFichier = IIf(InStr(ThisWorkbook.Name, ".") > 0, Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1), ThisWorkbook.Name)
End If

par ceci :

If VarType(nomFichier) = vbBoolean Then Exit Sub
Rechercher des sujets similaires à "enregistrer pdf bureau quel que soit utilisateur"