Pièce jointe vérouillée

Y compris Power BI, Power Query et toute autre question en lien avec Excel
r
redj12
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 11 novembre 2019

Message par redj12 » 19 novembre 2019, 12:59

Bonjour,

Mon code VBA me génère un mail et me l'affiche, en me demandant juste avant de sélectionner ma pièce jointe.
Le problème c'est que, lorsque mon mail est généré et affiché, je vois la pièce jointe mais je n'arrive pas à l'ouvrir or c'est ce que je souhaite faire pour ma dernière vérification.

Si je clique sur la pièce jointe, il ne se passe rien. Cependant, dès que je ferme mon mail généré, ma PJ s'ouvre (fichier excel).

Comment fait-il faire pour que la PJ ne soit pas verrouillée s'il vous plait ?

Je vous remercie d'avance.
Sub send_diana()
'Must add references (Tools > References) to
' 1) OLE Automation
' 2) Microsoft Outlook xx.0 Object Library
Dim outlookApp As Outlook.Application
Dim myMail As Outlook.MailItem
Dim Source_File As String
Montant = Application.InputBox("Le montant des honoraires ?", Type:=1)

Set outlookApp = New Outlook.Application
Set myMail = outlookApp.CreateItem(olMailItem)

myMail.To = "xxxxx"
myMail.Subject = "Honoraires gardes " & Format(Month(Now) - 1, "00") & "/" & Year(Date) & "."
myMail.HTMLBody = "Bonjour,<br> <br> Vous trouverez ci-joint la liste des honoraires pour le " & Format(Month(Now) - 1, "00") & "/" & Year(Date) _
& ".<br>" & "Un règlement de " & Montant & "  correspondant à cette liste sera effectué ces prochains jours. <br><br>" _
& "Nous restons à votre disposition pour tout renseignement complémentaire et vous présentons nos meilleures salutations." _
& "<br><br> xxxxx<br>Service Comptabilité"

'Place l'utilisateur dans le bon répertoire
ChDrive "W"                ' <<< lettre disque
ChDir "W:\xxxxr"      ' <<< ajout ' à adapter ...
 
'ouvre la boite de dialogue de choix du fichier

Source_File = Application.GetOpenFilename
myMail.Attachments.Add Source_File

myMail.Display True 'comment this out if you don't want to display email
'myMail.Send 'comment this out if you don't want to send yet

End Sub
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 2'182
Appréciations reçues : 182
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr 32 bits

Message par ric » 19 novembre 2019, 13:25

Bonjour,

Ni ton profil, ni ton message ne mentionnent quelle version de la Suite Office tu utilises.

Ici sur Office 365 ... ça fonctionne correctement.






ric
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
r
redj12
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 11 novembre 2019

Message par redj12 » 19 novembre 2019, 13:44

Bonjour Ric,

Désolé, je pensais que ça n'avait pas tellement d'importance.
Ma version : 16.0.4849.1000

Merci d'avance.
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 2'182
Appréciations reçues : 182
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr 32 bits

Message par ric » 19 novembre 2019, 14:46

Bonjour,

La version 16 est proche de la version 365 (laquelle évolue sans cesse).
Ici, ton code fonctionne. Une fois le courriel à l'écran, je peux ouvrir la pièce jointe, puis la fermer et finalisé l'envoi du courriel.

Un renseignement que tu n'as pas mentionné ... est-ce des fichiers Excel (.xlsx ou .xlsm) que tu tentes d'envoyer ou autre chose (.docx, .docm, .pdf, etc).

Perso, je effectué les essais avec des fichiers .xlsm.







ric
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
r
redj12
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 11 novembre 2019

Message par redj12 » 19 novembre 2019, 15:00

Bonjour,

Je viens d'essayer un pdf, docx et jpeg et les trois s'ouvrent bien.
Par contre, aucun fichier xlsx ne s'ouvre.
Le fichier que je dois incluse en pièce jointe est un xlsx.

Lorsque mon mail s'affiche, je ne peux même pas cliquer sur l'icone Excel pour revenir a mon tableau depuis lequel j'envoie mes mails. Clinique sur l'icone Excel ne fait aucun effet. Le mail doit bien le dérouiller je pense.
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 2'182
Appréciations reçues : 182
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr 32 bits

Message par ric » 19 novembre 2019, 16:27

Bonjour,

Est-ce qu'Excel est bien l'application par défaut pour le type de fichier .xlsx ?

Le problème ne provient pas du code ... mais, éventuellement de la sécurité d'Excel ou d'Outlook; sécurité qui a éventuellement pu être modifiée sur ma machine.

Mais là, je n'ose pas suggérer quoique ce soit concernant la sécurité de ta machine.

En attendant que tu trouves une meilleure solution ... une astuce qui fonctionnera peut-être ...
 ... 
  ...
  ...
  Source_File = Application.GetOpenFilename
myMail.Attachments.Add Source_File
Workbooks.Open Source_File	' <<<< ajout pour ouvrir le fichier choisi 
myMail.Display True
 ...
 ...
L'inconvénient ... tu ne pourras pas fermer le fichier tant que le courriel ne sera pas envoyé ou fermé.






ric
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
r
redj12
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 11 novembre 2019

Message par redj12 » 20 novembre 2019, 12:08

Salut Ric,

Merci pour ton aide. Ca marche très bien !

J'essaye de faire autre chose, peut-être tu peux m'aider.
Je souite inclure dans mon texte la varible "Montant", dans le email généré.
Cette variable se trouve toujours dans la dernière celulle de la colonne E, dans le tableau que je séléctionne en PJ.

J'ai essayé de plancer un :
Range("E" & Rows.Count).End(xlUp).Row
Je sais pas trop où le placer dans mon code car lorsque je génére le fichier, j'ai bien un chiffre mais je pense que c'est un chiffre aléatoire qu'il me met. Ca ne correpond pas du tout au chiffre de la celulle E de ma PJ.
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 2'182
Appréciations reçues : 182
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr 32 bits

Message par ric » 20 novembre 2019, 13:12

Bonjour,

Un essai ...
Remarque : j'ai ajouté le symbole euro à la suite du montant dans le texte du corps du message ...
Sub send_diana()
'Must add references (Tools > References) to
' 1) OLE Automation
' 2) Microsoft Outlook xx.0 Object Library
Dim outlookApp As Outlook.Application
Dim myMail As Outlook.MailItem
Dim Source_File As String
Dim LeNom As String
Dim MonFich As String
Dim Montant As Double
Dim dlig As Integer

''Montant = Application.InputBox("Le montant des honoraires ?", Type:=1)

Set outlookApp = New Outlook.Application
Set myMail = outlookApp.CreateItem(olMailItem)

myMail.To = "xxxxx"
myMail.Subject = "Honoraires gardes " & Format(Month(Now) - 1, "00") & "/" & Year(Date) & "."

' Place l'utilisateur dans le bon répertoire
ChDrive "T"                ' <<< lettre disque
ChDir "T:\LesExcels\"      ' <<< ajout ' à adapter ...
LeNom = "T:\LesExcels\"

' ouvre la boite de dialogue de choix du fichier
Source_File = Application.GetOpenFilename
myMail.Attachments.Add Source_File

' détermine le nom du fichier sans son chemin
MonFich = Right(Source_File, Len(Source_File) - Len(LeNom))

' ouvre le fichier
Workbooks.Open Source_File

' le fichier est ouvert, trouver la dernière ligne de la colonne E
dlig = Workbooks(MonFich).ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row

' lire le montant de la dernière ligne de la colonne E
Montant = Workbooks(MonFich).ActiveSheet.Range("E" & dlig).Value

' ajout au corps du message
myMail.HTMLBody = "Bonjour,<br> <br> Vous trouverez ci-joint la liste des honoraires pour le " & Format(Month(Now) - 1, "00") & "/" & Year(Date) _
& ".<br>" & "Un règlement de " & Montant & " € correspondant à cette liste sera effectué ces prochains jours. <br><br>" _
& "Nous restons à votre disposition pour tout renseignement complémentaire et vous présentons nos meilleures salutations." _
& "<br><br> xxxxx<br>Service Comptabilité"

myMail.Display True 'comment this out if you don't want to display email
'myMail.Send 'comment this out if you don't want to send yet

End Sub






ric
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
r
redj12
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 11 novembre 2019

Message par redj12 » 20 novembre 2019, 17:18

Grand merci à toi !

Tu peux juste m'expliquer l'utilité de cette déclaration s'il te plait :
LeNom = "T:\LesExcels\"
Je ne vois pas comment l'utiliser ni à quoi elle sert.
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 2'182
Appréciations reçues : 182
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr 32 bits

Message par ric » 20 novembre 2019, 18:22

Bonjour,

Cela sert quelques lignes plus bas à extraire le nom du fichier sans son chemin.
MonFich = Right(Source_File, Len(Source_File) - Len(LeNom))

Ensuite, avec le nom du fichier, l'on peut lire dedans.
Montant = Workbooks(MonFich).ActiveSheet.Range("E" & dlig).Value

Pour inclure le Montant dans le corps du courriel.






ric
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message