Enregistrer en pdf sur bureau quel que soit l'utilisateur
Merci beaucoup !
Par contre, je ne comprends toujours pas bien comment fonctionne l'instruction suivante:
If VarType(nomFichier) = vbBoolean Then
nomFichier = IIf(InStr(ThisWorkbook.Name, ".") > 0, Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1), ThisWorkbook.Name)
End IfJe t'avais dit plus haut que
Voici une explication du fonctionnement du code suivant :vba-new a écrit :Le traitement IIf(InStr(ThisWorkbook.Name, ".") > 0... que je fais est pour supprimer l'extension du nom du fichier.
IIf(InStr(ThisWorkbook.Name, ".") > 0, Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1), ThisWorkbook.Name)Pour enlever l'extension du fichier, je cherche l'emplacement du point. Si le point existe (instr(...)>0) j'extrais la partie qui est à gauche du point (Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1)). Si le point n'existe pas, je garde le nom du fichier (ThisWorkbook.Name)
Bonjour,
Cette formule m'a été très utile, merci
Par contre je voudrais que le fichier PDF ne s'ouvre pas, juste enregistrer
ou alors il s'ouvre et se referme.
Merci de votre aide
Bonjour Ambroise,
Aucune idée concernant ta requête, vba-new en saura peut-être davantage.
Bonne journée.
vba-new a écrit :Bonjour à tous,
Essaie avec ceci :
"D:\Profiles_dupont\Users\" & Environ("username") & "\Desktop\Haute saison v2.pdf"
Bonjour!!!
Je cherche également à enregistrer en pdf sur bureau quel que soit l'utilisateur.
Mais n'y a-t-il pas un problème avec le fait que le document s'enregistre sur le disque D?
Savez vous quel code utiliser pour que celui ci s'enregistre sur le disque de l'utilisateur?
J'ai essayé : Environ("Variable") mais apparemment ça ne marche pas :/
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Environ("VARIABLE") & ":\Users\" & Environ("username") & "\Desktop\Nom de mon document.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Une idéee s'il vous plait?
Bonjour Faten.zirek
Essaye ce code
Sub CheminBureau()
Dim stRep As String
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
stRep = WshShell.SpecialFolders("Desktop")
MsgBox "Chemin d'accès au bureau : " & stRep
Set WshShell = Nothing
End SubA+
BrunoM45 a écrit :Bonjour Faten.zirek
Essaye ce code
Sub CheminBureau() Dim stRep As String Dim WshShell As Object Set WshShell = CreateObject("WScript.Shell") stRep = WshShell.SpecialFolders("Desktop") MsgBox "Chemin d'accès au bureau : " & stRep Set WshShell = Nothing End SubA+
Tout d'abord merci pour ta réponse BrunoM45;
Je ne suis pas très douée en vba, mais voici ce que j'ai réussi à faire; sur mon bureau, ça marche!! mais j'aimerais que la macro suivante fonctionne depuis n'importe quel bureau.. Du coup, tu me conseilles de placer le code que tu as fait à quel endroit??
Ma macro:
Sub Depots()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\" & Environ("username") & "\Desktop\Nom de mon doc.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set a = Outlook.CreateItem(olMailItem)
With a
.To = ""
.Attachments.Add ("C:\Users\" & Environ("username") & "\Desktop\Nom de mon doc.pdf")
.Subject = "Bon de commande"
.BodyFormat = olFormatHTML
.Body = "Bonjour," & Chr(10) & "" & Chr(10) & "Vous trouverez ci-joint mon bon de commande. " & Chr(10) & "" & Chr(10) & "Cordialement, "
.Display
End With
End Sub
Merci beaucoup!!!
Re,
Voici ton code modifié
Sub Depots()
Dim sNomFic As String, sRep As String, WshShell As Object
' Créer une instance Windows Script pour retrouver le chemin du bureau
Set WshShell = CreateObject("WScript.Shell")
sRep = WshShell.SpecialFolders("Desktop")
Set WshShell = Nothing
' Définit le nom du fichier à enregistrer
sNomFic = "Nom de mon doc.pdf"
' Enregistrer la feuille en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set a = Outlook.CreateItem(olMailItem)
With a
.To = ""
.Attachments.Add (sRep & "\" & sNomFic)
.Subject = "Bon de commande"
.BodyFormat = olFormatHTML
.Body = "Bonjour," & Chr(10) & "" & Chr(10) & "Vous trouverez ci-joint mon bon de commande. " & Chr(10) & "" & Chr(10) & "Cordialement, "
.Display
End With
End SubA+
BrunoM45 a écrit :Re,
Voici ton code modifié
Sub Depots() Dim sNomFic As String, sRep As String, WshShell As Object ' Créer une instance Windows Script pour retrouver le chemin du bureau Set WshShell = CreateObject("WScript.Shell") sRep = WshShell.SpecialFolders("Desktop") Set WshShell = Nothing ' Définit le nom du fichier à enregistrer sNomFic = "Nom de mon doc.pdf" ' Enregistrer la feuille en PDF ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=False Set a = Outlook.CreateItem(olMailItem) With a .To = "" .Attachments.Add (s[color=#FF4000]t[/color]Rep & "\" & sNomFic) .Subject = "Bon de commande" .BodyFormat = olFormatHTML .Body = "Bonjour," & Chr(10) & "" & Chr(10) & "Vous trouverez ci-joint mon bon de commande. " & Chr(10) & "" & Chr(10) & "Cordialement, " .Display End With End SubA+
MERCI INFINIMENT!!
Il y avait juste une faute de frappe. Du coup, j'ai juste supprimer le t, et ça fonctionnait nickel!
J'ai donc écrit:
Sub Depots()
Dim sNomFic As String, sRep As String, WshShell As Object
' Créer une instance Windows Script pour retrouver le chemin du bureau
Set WshShell = CreateObject("WScript.Shell")
sRep = WshShell.SpecialFolders("Desktop")
Set WshShell = Nothing
' Définit le nom du fichier à enregistrer
sNomFic = "Nom de mon doc.pdf"
' Enregistrer la feuille en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set a = Outlook.CreateItem(olMailItem)
With a
.To = ""
.Attachments.Add (sRep & "\" & sNomFic)
.Subject = "Bon de commande"
.BodyFormat = olFormatHTML
.Body = "Bonjour," & Chr(10) & "" & Chr(10) & "Vous trouverez ci-joint mon bon de commande. " & Chr(10) & "" & Chr(10) & "Cordialement, "
.Display
End With
End Sub
Encore Merci,
Faten
Bonjour, c'est encore moi!
J'ai encore un petit soucis; Au bureau, j'ai un pc; mais chez moi j'ai un mac. Et la macro suivante fonctionne très bien au bureau, mais je n'ai pas réussi à l'exécuter sur un mac.. Qu'en pensez vous? Est ce normal?
Sub Depots()
Dim sNomFic As String, sRep As String, WshShell As Object
' Créer une instance Windows Script pour retrouver le chemin du bureau
Set WshShell = CreateObject("WScript.Shell")
sRep = WshShell.SpecialFolders("Desktop")
Set WshShell = Nothing
' Définit le nom du fichier à enregistrer
sNomFic = "Nom de mon doc.pdf"
' Enregistrer la feuille en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set a = Outlook.CreateItem(olMailItem)
With a
.To = ""
.Attachments.Add (sRep & "\" & sNomFic)
.Subject = "Bon de commande"
.BodyFormat = olFormatHTML
.Body = "Bonjour," & Chr(10) & "" & Chr(10) & "Vous trouverez ci-joint mon bon de commande. " & Chr(10) & "" & Chr(10) & "Cordialement, "
.Display
End With
End Sub
Encore merci pour votre aide
Faten
Re,
Oui c'est tout à fait normal
Dans le code on instancie l'objet Outlook,
sur mac il me semble que le logiciel n'a pas le même nom, c'est "Entourage"
A+
BrunoM45 a écrit :Re,
Oui c'est tout à fait normal
Dans le code on instancie l'objet Outlook,
sur mac il me semble que le logiciel n'a pas le même nom, c'est "Entourage"
A+
Merci pour ta réponse BrunoM45;
Mais pourquoi j'ai l'impression que quand je franchis un obstacle, il y'en a un encore plus important juste après?! lol..
Du coup, tu me conseilles quoi? J'aimerais que mon logiciel soit utilisable sur tous types d'ordinateur?..
Merci encore
Re,
faten.zirek a écrit :Mais pourquoi j'ai l'impression que quand je franchis un obstacle, il y'en a un encore plus important juste après?! lol..
L'informatique est comme ça, c'est du binaire, après un 1 tu peux avoir un 0
faten.zirek a écrit :Du coup, tu me conseilles quoi? J'aimerais que mon logiciel soit utilisable sur tous types d'ordinateur?..
Houla... déjà tu es mal parti
Dans ton code, tu instancies Outlook en "Early binding", liaison anticipée, en inscrivant la référence à l'objet dans le projet VBA
OR, entre une version Excel 2000, 2003, 2010 et antérieure cette référence n'est pas la même
De plus le monde PC et Mac est vraiment 2 mondes différends tu ne pourras pas forcément utiliser du code développé sur PC pour un Mac, je pense notamment aux API Windows que l'on utilise parfois.
Bref à toi de chercher un peu et de voir ce que tu veux faire
BrunoM45 a écrit :Re,
faten.zirek a écrit :Mais pourquoi j'ai l'impression que quand je franchis un obstacle, il y'en a un encore plus important juste après?! lol..
L'informatique est comme ça, c'est du binaire, après un 1 tu peux avoir un 0
faten.zirek a écrit :Du coup, tu me conseilles quoi? J'aimerais que mon logiciel soit utilisable sur tous types d'ordinateur?..
Houla... déjà tu es mal parti
Dans ton code, tu instancies Outlook en "Early binding", liaison anticipée, en inscrivant la référence à l'objet dans le projet VBA
OR, entre une version Excel 2000, 2003, 2010 et antérieure cette référence n'est pas la même
De plus le monde PC et Mac est vraiment 2 mondes différends tu ne pourras pas forcément utiliser du code développé sur PC pour un Mac, je pense notamment aux API Windows que l'on utilise parfois.
Bref à toi de chercher un peu et de voir ce que tu veux faire
Merci de m'anoncer la couleur BrunoM45, lol..
Et merci de me faire rire dans un moment pareil! lol
Bon, au boulot!