Bonjour !

Voilà, je travaille actuellement sur outil Excel permettant l'envoi de mails automatiques selon ce que l'on remplit dans certaines cellules de mon fichier.

La macro qui me pose problème est sensée s'exécuter à la fermeture du fichier. Etant donné que je voulais d'abord la tester sans devoir fermer le fichier à chaque fois, je l'ai développer comme une macro basique, sans l'insérer dans un "Private Sub Workbook_BeforClose".

Lorsque j'exécute ma macro dans cette forme, les mails sont effectivement comme je le souhaitais, mais j'ai message d'erreur automation qui apparaît : -2147467259, et impossible de trouver d'où ça provient.

Comme j'obtenais quand même le résultat que je voulais, je l'ai testé dans le "Private Sub Workbook_BeforClose". Cette fois, quand je ferme mon fichier, un message d'erreur apparaît "L'élément a été déplacé ou supprimé.", et un de mes mails de s'envoie pas
Au débogage, je peux voir que l'erreur viendrait d'ici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
For i = 0 To UBound(Tableau_Z016)
        
            Initiales_Coord = Tableau_Z016(2, i)
            
            Sheets("Table").Select
            For j = 4 To 23 'On suppose qu'il n'y aura jamais plus de 20 coordinateurs
                If Cells(j, 2) = Initiales_Coord Then
                    Mail_Coord = Cells(j, 4)
                End If
            Next j
            
            Sheets("En-cours").Select
            
            With OLmail
                .to = Mail_Coord
                .Subject = "[EMO] - OF EMO CREE"
                .Body = "Bonjour," & Chr(10) & " " & Chr(10) & "Les OF EMO suivants ont été créés :" & Chr(10) & Corps_Mail_Coord & Chr(10) & " " & Chr(10) & "Cordialement," & Chr(10) & " " & Chr(10)
                .Send
            End With
            
            Cells(Ligne, 20) = "OK"
            
        Next i
Et je ne comprends pas mon erreur

Pouvez-vous m'aidez svp ?

Merci d'avance !!!




Le programme au complet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Sub Envoi_Mail()
 
    Sheets("En-cours").Select
 
    Dim OL As Object
    Dim OLmail As Object
    Dim Mail_AD As String
    Dim Mail_Coord As String
    Dim Initiales_Coord As String
    Dim i As Integer
    Dim j As Integer
    Dim Compteur As Integer
    Dim Ligne As Integer
    Dim Nb_Ligne As Integer
    Dim Tableau_Ref() As String
    Dim Nb_Ref As Integer
    Dim Corps_Mail_AD As String
    Dim Tableau_Z016() As String
    Dim Nb_Z016 As Integer
    Dim Corps_Mail_Coord
 
    Nb_Ligne = Cells(3, 2)
    Compteur = 0
    Ligne = 6
 
    'INITIALISATION DU TABLEAU DES REFERENCES MXE
    Nb_Ref = 0
    ReDim Preserve Tableau_Ref(Compteur)
 
    'INITIALISATION DES TABLEAUX DES OF Z016 ET DES REFERENCES MXE ASSOCIEES
    Nb_Z016 = 0
    ReDim Preserve Tableau_Z016(3, Nb_Z016)
 
 
    Set OL = CreateObject("Outlook.Application")
    Set OLmail = OL.CreateItem(0)
 
    'SELECTION DU DESTINATAIRE DANS L'ONGLET "TABLE"
    Sheets("Table").Select
    Mail_AD = Cells(36, 3)
 
    Sheets("En-cours").Select
 
    Do While Compteur <> Nb_Ligne
 
        'REMPLISSAGE DU TABLEAU DES REFERENCES MXE
        If (Cells(Ligne, 15) = "OK") And (Cells(Ligne, 16) <> "OK") Then
            Nb_Ref = Nb_Ref + 1
            ReDim Preserve Tableau_Ref(Nb_Ref)
            Tableau_Ref(Nb_Ref - 1) = Cells(Ligne, 3)
            Cells(Ligne, 16) = "OK"
        End If
 
        'REMPLISSAGE DES TABLEAUX DES OF Z016
        If (Cells(Ligne, 19).Value <> vbEmpty) And (Cells(Ligne, 20) <> "OK") Then
            Nb_Z016 = Nb_Z016 + 1
            ReDim Preserve Tableau_Z016(3, Nb_Z016)
            Tableau_Z016(0, Nb_Z016 - 1) = Cells(Ligne, 3)
            Tableau_Z016(1, Nb_Z016 - 1) = Cells(Ligne, 19)
            Tableau_Z016(2, Nb_Z016 - 1) = Cells(Ligne, 6)
            Cells(Ligne, 20) = "OK"
        End If
 
        Compteur = Compteur + 1
        Ligne = Ligne + 1
 
        Cells(3, 4) = Compteur
        Cells(3, 5) = Ligne
 
    Loop
 
    'ECRITURE DU CORPS DE MAIL DESTINE A L'ASSISTANTE DE DIRECTION
    For i = 0 To Nb_Ref
        Corps_Mail_AD = Corps_Mail_AD & Chr(10) & Tableau_Ref(i)
    Next i
 
    'ECRITURE DU CORPS DE MAIL DESTINE AUX COORDINATEURS
    'For i = 0 To Nb_Z016
        'Corps_Mail_Coord = Corps_Mail_Coord & Chr(10) & Tableau_Z016(0, i) & "          " & Tableau_Z016(1, i)
    'Next i
 
    'ENVOI DU MAIL A L'ASSISTANTE DE DIRECTION
    If Nb_Ref <> 0 Then
 
        With OLmail
            .To = Mail_AD
            .Subject = "[EMO] - Création d'un OF EMO"
            .Body = "Bonjour," & Chr(10) & " " & Chr(10) & "Svp, pourriez-vous créer les OF EMO, dont la référence MXE sont les suivantes : " & Chr(10) & Corps_Mail_AD & Chr(10) & " " & Chr(10) & "Cordialement," & Chr(10) & " " & Chr(10)
            .Send
        End With
 
    End If
 
    'ENVOI DU MAIL AUX COORDINATEURS
    If Nb_Z016 <> 0 Then
 
        For i = 0 To UBound(Tableau_Z016)
 
            Initiales_Coord = Tableau_Z016(2, i)
 
            Sheets("Table").Select
            For j = 4 To 23 'On suppose qu'il n'y aura jamais plus de 20 coordinateurs
                If Cells(j, 2) = Initiales_Coord Then
                    Mail_Coord = Cells(j, 4)
                End If
            Next j
 
            Sheets("En-cours").Select
 
            With OLmail
                .To = Mail_Coord
                .Subject = "[EMO] - OF EMO CREE"
                .Body = "Bonjour," & Chr(10) & " " & Chr(10) & "L'OF EMO suivant ont été créé :" & Chr(10) & Tableau_Z016(0, i) & "            " & Tableau_Z016(1, i) & Chr(10) & " " & Chr(10) & "Cordialement," & Chr(10) & " " & Chr(10)
                .Send
            End With
 
        Next i
 
    End If
 
End Sub