Problème répertoire "temp" suite macro pour créer un pdf

Bonjour à tous

j'ai une macro qui me permet de créer un fichier pdf et qui l'enregistre dans c:\temp

sur mon PC tout va bien

Par contre quand j'ai fait tester la macro par des collègues, ils ont un message d'erreur concernant la variable "sPath = Environ("TEMP") & "\""

Quelqu'un aurait-il une idée pour que la macro puisse s’exécuter sur tout les systèmes ?

Ci dessous le code de ma macro

Merci d'avance

' Ce code permet de générer un PDF à partir d'une feuille et de le joindre à un mail
Sub Sheet_ToPDF_ToMail()
' Déclarationd es variables utilisées dans le code
Dim sPath As String, sFileName As String, ShtName As String
Dim OutObj As Object, Email As Object
'
' Initialisation des variables
' Chemin d'accès du dossier TEMP
sPath = Environ("TEMP") & "\"
' Nom du fichier à envoyer par mail
sFileName = "Demande d'habilitation" & "_" & Range("F16").Value & Format(Now, " (dd-mm-yyyy - hh'nn)")
' Vérifier l'extension du fichier à enregistrer
If Right(sFileName, 4) <> ".pdf" Then sFileName = sFileName & ".pdf"
' Nom de la feuille à exporter en PDF
ShtName = "Demandes"
'
'
' 1) Générer le PDF dans le répertoir temporaire de l'utilisateur
Sheets(ShtName).ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

'
' 2) Créer le mail et joindre le fichier
' Création d'une instance Outlook pour envoyer un mail
Set OutObj = CreateObject("Outlook.Application")
Set Email = OutObj.CreateItem(0)
' Avec mon objet Email
With Email
.Display ' Afficher le mail pour afficher la signature
' Destinataire(s) du mail
.To = "christophe-c.ferreira@enedis.fr"
' Copie du mail
.CC = ""
' Sujet de l'eMail
.Subject = "Demande Habilitation pour" & "_" & Range("H16").Value & "_" & Range("G16").Value & "_" & Range("f16").Value
' Corps du mail avec signature à la fin
.HTMLBody = "Vous trouverez ci-joint le fichier pdf " & "<BR><BR>" & "=>" & "Demandeur" & " : " & Range("F10").Value & "_" & Range("E10").Value
' Joindre le fichier précédemment créé
.Attachments.Add sPath & sFileName
' Envoyer l'email
.Send

MsgBox "Le fichier PDF va s'ouvrir, l'enregistrer et le joindre à la demande"

Sheets("Demandes").Select
Sheets("Demandes").Copy
Range("A1:L71").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$L$71"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Temp\demande d'habilitation.pdf", Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
ActiveWindow.Close SaveChanges:=False
End With

End Sub

Bonjour,

Quel est le message d'erreur ?

Cdlt.

Bonjour à tous,

Je serais surpris que  "sPath = Environ("TEMP") & "\""  ne fonctionne pas sur les postes de tes collègues ...

" Environ("TEMP") " > ne crée pas le dossier > il détecte le dossier des fichiers temporaires de la machine ...

Pour vérifier > fais un pas-à-pas (touche F8) ...

Mais là où il y aura un souci > tu inscris en dur le chemin "C:\Temp\ ... > lequel n'existe pas nécessairement sur les machines de tes collègues.
Remplace ...

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Temp\demande d'habilitation.pdf", Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

par ...

      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
           sPath & "demande d'habilitation.pdf", Quality:=xlQualityMinimum, _
           IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

sPath > donnera accès au dossier temporaire sur les machines de tes collègues > et le code devrait bien fonctionner ...

ric

Ok merci pour votre aide

Je vais faire tester à nouveau

cordialement

ça n'a pas fonctionné

Voici le message d'erreur :

image

Merci d'avance

Cordialement

Bonjour à tous,

N'essayeriez-vous pas sur un Mac par hasard ? Car je crois que Environ n'est pas disponible sur Mac.

Cdlt,

Non ce sont bien des PC

Bonjour à tous,

Le souci ne provient pas du code s'il est exécuté sur PC > il a été testé sur Excel 2007 et Excel 365 ( en 32 et 64 bits ) ...

Cette ligne :  sPath = Environ("TEMP") & "\"  > ne nécessite pas de bibliothèque particulière ...

Sur une machine > j'ai enlevé toutes les biblothèrques de références > sauf "Visual Basic For Application" et "Microsoft Excel xx.0 Object Library" ...

Cette ligne fonctionne toujours bien ....

Si ça ne fonctionne pas sur les postes de tes collègues > il doit y avoir une restriction quelconque ...

Souvent > dans les entreprises > les machines sont passablement restreintes ...

ric

Bonjour ric,

Oui, ça semble être la seule explication plausible mais le message est quand même bizarre...

Sinon, quelle est cette différence entre sheets et worksheets ?

@Christophe : Qu'est-ce que vous cherchez à faire exactement ? Quels sont les répertoires à obtenir et dans quels conditions ?

Bonnes fêtes à vous,

Bonjour,

regarde quand même que tu n'as pas de ressources note Manquante dans vba Outils/Références....
Si tu en as il faut les décocher
eric

Bonjour à tous,

@ 3GB

Sinon, quelle est cette différence entre sheets et worksheets ?

Sheets est le parent ...

- Clique droit sur un onglet > Insérer > les enfants sont là ...

Donc > pour être "tetteux" > une feuille de calcul > c'est "Worksheets" ...

ric

Bonjour à tous,

Dit autrement :
Sheets est une collection qui contient les Worksheets + les feuilles de graphiques.
eric

Ah c'est fou ça, je n'en avais pas connaissance du tout. Mais est-ce que vous savez à quoi servent alors ces autres sheets ? Qu'est-ce qu'elles ont de particulier qui ne puisse être réalisé sur une feuille normale ? Sur ma version, j'ai des feuilles de macro, feuilles de graphique, feuilles de boite de dialogue... mais rien qui semble apporter quelque chose de plus.

Cdlt,

Pas bien clair... Quelles autres sheets ?
Les feuille macro sont un résidu d'excel avant vba, restées juste pour compatibilité.
eric

Salut eriiic,

J'ai dit, peut-être pas assez précisément :

j'ai des feuilles de macro, feuilles de graphique, feuilles de boite de dialogue

en opposition aux feuilles excel classiques (tableur, worksheet). Tous ces objets (worksheets, feuilles de graphique, etc) sont des sheets. Mais à quoi servent les sheets qui ne sont pas des worksheets ?

Mais si j'en comprends ta réponse, elles ne seraient qu'un résidu, finalement inutile car les feuilles "classiques" assurent désormais toutes les fonctionnalités.

Et Joyeux Noel !

Cdlt,

Bonjour,

Mais à quoi servent les sheets qui ne sont pas des worksheets ?

heuuu, les feuilles Graphiques servent à afficher des graphiques
eric

Bonjour à tous

Tout d'abord merci à tous pour vos retours

Très enrichissant comme d'habitude.

pour répondre à 3GB, je souhaite simplement faire une macro pour générer un fichier PDF avec ma feuille excel et par la même occasion envoyer un mail avec ce pdf.

pour répondre à FALSE à priori il n'y a pas de ressources note Manquante dans vba Outils/Références.... mais je vais quand même revérifier.

le dossier "temp" c'était pratique, dans mon entreprise on l'a tous et il est ouvert à l'écriture.

Mon projet était finalisé et tout est remis en question à cause de ce message d'erreur. (3 mois de boulot)

Dans l'attente de votre retour (une petite idée de dernière minute peut-être)

Je vous souhaite une excellente journée

Cordialement

Bonjour,

pour répondre à FALSE à priori il n'y a pas de ressources note Manquante dans vba Outils/Références.... mais je vais quand même revérifier.

ça aurait bien de le faire avant de demander d'autres idées non ?
Sinon, pour simplifier, tu pourrais te créer ton propre C:\temp s'il n'existe pas.
eric

Bonjour à tous,

Pour la réponse, elle n'est peut-être pas assez précise car on ne connait pas la destination du PDF suivant les cas.

Mais comme l'a dit FALSE, enfin true, enfin eriiic je veux dire , il pourrait être judicieux d'utiliser la fonction Dir et d'éventuellement créer un répertoire ou sinon de rester sur le chemin du classeur.

Cdlt,

bonjour Eric

En effet tu as raison, la référence Microsoft Outlook 16.0 Object library est signalée comme MANQUANTE

Comment puis-je faire ? ils ont une version 15.0 et moi la 16.0

Y a t-il un moyen de gérer ce problème de version ?

Merci d'avance

Rechercher des sujets similaires à "probleme repertoire temp suite macro creer pdf"