Macro fonctionne en mode pas à pas (F8) mais pas en auto

Bonjour au forum,

Je rencontre un problème avec une macro me permettant de créer 3 images à partir de 3 plages de cellules, et de les ajouter en pièces jointes à un email envoyé quotidiennement.

La macro fonctionne parfaitement en mode pas à pas avec F8, les images sont bien créées une par une et s'exportent correctement, puis elles sont bien ajoutées en pièces jointes.

Par contre, lorsque j'exécute la macro via un bouton ou autre, les images ne sont pas correctement créées et restent vides...

J'ai testé en ralentissant la macro avec Application.Wait dans l'hypothèse où le problème viendrait du temps d'exécution de la macro mais cela ne change rien.

Auriez-vous une hypothèse ?

Code :

Sub EnvoiMail()

Dim oRange1, oRange2, oRange3 As Range
Dim oCht1, oCht2, oCht3 As Chart
Dim oImg As Picture
Dim objOL As Object, ObjMail As Object
Dim oAttach1, oAttach2, oAttach3 As Object, ColAttach As Object
'-----------------------------------------------------------------------------------------------------------------------
Application.CutCopyMode = False
Application.ScreenUpdating = False
'-----------------------------------------------------------------------------------------------------------------------
Set oCht1 = Charts.Add
oCht1.ChartArea.Clear
Set oRange1 = Sheets("Tableau de bord").Range("B10:G39") 'UsedRange
oRange1.CopyPicture xlScreen, xlPicture
'Application.Wait (Now + TimeValue("00:00:02"))
oCht1.Paste
oCht1.Export Filename:="C:\Temp\État.jpg", Filtername:="JPG"
'-----------------------------------------------------------------------------------------------------------------------
Set oCht2 = Charts.Add
oCht2.ChartArea.Clear
Set oRange2 = Sheets("Tableau de bord").Range("L10:O39") 'UsedRange
oRange2.CopyPicture xlScreen, xlPicture
'Application.Wait (Now + TimeValue("00:00:02"))
oCht2.Paste
oCht2.Export Filename:="C:\Temp\Alerte.jpg", Filtername:="JPG"
'-----------------------------------------------------------------------------------------------------------------------
Set oCht3 = Charts.Add
oCht3.ChartArea.Clear
Set oRange3 = Sheets("Tableau de bord").Range("T10:AB39") 'UsedRange
oRange3.CopyPicture xlScreen, xlPicture
'Application.Wait (Now + TimeValue("00:00:02"))
oCht3.Paste
oCht3.Export Filename:="C:\Temp\Tendance.jpg", Filtername:="JPG"
'-----------------------------------------------------------------------------------------------------------------------
    Set objOL = CreateObject("Outlook.Application")
    Set ObjMail = objOL.CreateItem(0)
    Set ColAttach = ObjMail.Attachments
    Set oAttach1 = ColAttach.Add("C:\Temp\État.jpg") 'Changer le chemin et le nom de l'image
    Set oAttach2 = ColAttach.Add("C:\Temp\Alerte.jpg") 'Changer le chemin et le nom de l'image
    Set oAttach3 = ColAttach.Add("C:\Temp\Tendance.jpg") 'Changer le chemin et le nom de l'image
'-----------------------------------------------------------------------------------------------------------------------
    With ObjMail
        .To = "MonEmail@Email.com"
        .Subject = "MonSujet"
        .HTMLBody = "<BODY><FONT face=Arial color=#000080 size=2></FONT>" & _
            "Bonjour, <br><br> Veuillez trouver ci-joint blablabla : <br><br> <IMG src=cid:État.jpg> <br><br> <IMG src=cid:Alerte.jpg> <br><br> <IMG src=cid:Tendance.jpg> <br><br> Bonne journée !</BODY>"   'Nom de l'image sans chemin
        ObjMail.Save
        .Send    'Display permet d'afficher le message, Send l'envoie sans affichage
    End With
'-----------------------------------------------------------------------------------------------------------------------
    Set oAttach1 = Nothing
    Set oAttach2 = Nothing
    Set oAttach3 = Nothing
    Set ColAttach = Nothing
    Set ObjMail = Nothing
    Set objOL = Nothing
'-----------------------------------------------------------------------------------------------------------------------
Application.DisplayAlerts = False
oCht1.Delete
oCht2.Delete
oCht3.Delete
Application.DisplayAlerts = True
'-----------------------------------------------------------------------------------------------------------------------
Application.ScreenUpdating = True
End Sub
12test-fof.xlsm (23.33 Ko)

bonjour, il faut freiner votre macro, l'application.wait ne fonctionne qu'avec de multiple de secondes. J'utilise un graphique que je cache après usage.

15test-fof.xlsm (38.92 Ko)

Bonjour BsAlv,

Merci pour votre réponse, votre solution fonctionne parfaitement

Excellente journée à vous !

Rechercher des sujets similaires à "macro fonctionne mode pas auto"