Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 joindre fichier PDF par mail via différent PC

nettoyageduperche

XLDnaute Nouveau
Bonjour,
j'ai crée un logiciel de planning, qui peu être utilisé sur plusieurs poste de travail.
une fois le planning effectué je l'enregistre en PDF sur ondrive et je l'envoie par mail au collaborateur concerné
L'enregistrement en PDF avec la fonction ENVIRON fonctionne sur tout les postes
en revanche je n'arrive pas a mettre le fichier en pièce jointe dans le mail sur tout les poste.
si j'utilise la fonction ENVIRON la pièce jointe n'est pas attaché.
avez vous une astuce? si dessous le code VBA avec les chemin des autres ordinateurs

Private Sub envoyer_mail_Click()
Dim lemail As Variant
Dim adressemail As String

'sauvegarder la facture en pdf
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Environ("userprofile") & "\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1"), openafterpublish:=True


'envoyer la facture par mail;
Set lemail = CreateObject("outlook.application")

'rechercher l'adresse mail
adressemail = ActiveSheet.Range("a17")

'verifier si il y une adresse mail
If adressemail <> Empty Then
'envoyer un email

With lemail.CreateItem(olMailItem)
.Subject = "Planning "
.To = adressemail
.HTMLBody = "bonjour" & "," & "<br> ci-joint votre nouveau planning " & "," & "<br> NETTOYAGE DU PERCHE 02 37 52 25 16 <br> Cordialement"
.Display 'display pour voir le mail et send pour envoyer le mail
.Attachments.Add ("C:\Users\nettoyageduperche\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf")

'les chemins pour les autres postes
'pc jojo : .attachments.add("C:\Users\Admin\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf")
'pc pauline: .attachments.add("C:\Users\Utilisateur\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf")


End With

End If
Range("a1") = Range("a1") + 1
MsgBox ("votre planning est bien enregistré")
ActiveWorkbook.Save

End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nettoyageduperche,
Ce n'est pas clair. J'ai compris que ça marchait avec C:\Users\nettoyageduperche\OneDrive\PLANNING\ mais pas avec les autres chemin.

Juste une interrogation :
Etes vous sur de vos chemins :
C:\Users\Admin\OneDrive\PLANNING\ et
C:\Users\Utilisateur\OneDrive\PLANNING\
c'est bizarres ces arborescence Users\Admin et Users\Utilisateur ?

Une autre piste peut être est l'utilisation de Environ(20) au lieu de Environ(48).

Ci dessous Environ qui concerne User :
NEnviron(N)
1ALLUSERSPROFILE=C:\ProgramData
2APPDATA=C:\Users\PC_Name\AppData\Roaming
12FPS_BROWSER_USER_PROFILE_STRING=Default
15HOMEPATH=\Users\PC_Name
16LOCALAPPDATA=C:\Users\PC_Name\AppData\Local
20OneDrive=C:\Users\PC_Name\OneDrive
21OneDriveConsumer=C:\Users\PC_Name\OneDrive
39PUBLIC=C:\Users\Public
45USERDOMAIN=PC_Name-HP
46USERDOMAIN_ROAMINGPROFILE=PC_Name-HP
47USERNAME=PC_Name
48USERPROFILE=C:\Users\PC_Name
 

patricktoulon

XLDnaute Barbatruc
Bonjour
normalement environ userprofile devrait fonctionner
environ("userprofile") &"\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf")
il n'y a pas de raison
sinon ça veut dire que tes dossiers sont ou ont été modifié
un chose a faire c'est de tester la validité du chemin
msgbox dir (environ("userprofile") &"\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf") )<>""

si tu a false c'est qu'il y a un problème avec les données constituant le chemin
 

nettoyageduperche

XLDnaute Nouveau
 

nettoyageduperche

XLDnaute Nouveau
j'ai fait un copier collet des chemins sur les differents poste
sinon lorsque j'execute cette ligne :
msgbox dir (environ("userprofile") &"\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf") )<>"" j'ai ce message :

 

patricktoulon

XLDnaute Barbatruc
autant pour moi une parenthèses en trop
msgbox dir (environ("userprofile") &"\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf")<>""
et pendant que t'y est regarde ce que donne la chaine
msgbox dir (environ("userprofile") &"\OneDrive\PLANNING\" & Range("k7") & " planning " & Range("a1") & ".pdf")
 

patricktoulon

XLDnaute Barbatruc
Ok ca marche cmais c'est pas optimisé
par exemple
tu crée l'object outlook avant meme de savoir si A17 contient une address
tu code le chemin 2 fois

une version de ton code
VB:
Private Sub envoyer_mail_Click()
    Dim lemail As Object, adressemail$, chemin$, nom$

    With ActiveSheet
        'si il n'y a pas de mail on sort tout de suite on va pas plus loin
        If Trim(.Range("a17")) = "" Then MsgBox "il n'y a pas d'addresse mail en A17": Exit Sub

          
            adressemail = Trim(.Range("a17")) ' l'adresse mail
            
            chemin = Environ("userprofile") & "\OneDrive\PLANNING\"
            nom = .Range("k7") & " planning " & .Range("a1") 'chemin

            
            If Dir(chemin, vbDirectory) <> "" Then 'sauvegarder la facture en pdf
                ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & nom    ', openafterpublish:=True' pas vraiment necessaire le pubish
            Else
                MsgBox "l'application n'a pas pu acceder au dossier/Fichier": Exit Sub
            End If

            ' mail;
            Set lemail = CreateObject("outlook.application")
            With lemail.CreateItem(olMailItem)
                .Subject = "Planning "
                .To = adressemail
                .HTMLBody = "bonjour" & "," & "<br> ci-joint votre nouveau planning " & "," & "<br> NETTOYAGE DU PERCHE 02 37 52 25 16 <br> Cordialement"
                .Display    'display pour voir le mail et send pour envoyer le mail
                .Attachments.Add chemin
            End With

         .Range("a1") = .Range("a1") + 1
        MsgBox ("votre planning est bien enregistré")
    End With
    ActiveWorkbook.Save

End Sub
 

Discussions similaires

Réponses
3
Affichages
621
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…