Bonsoir à tous,

Après multiples recherches et pleins d'exemples intéressant, je reste coincé sur ma procédure suivante.

1-Je cherche à récupérer la valeur (adresse mail) correspondant à la cellule de la première ligne et de la colonne "O" dans ma plage filtrée.
2-Je cherche à entrer la date du jour (sans heure) dans toutes les cellules de la colonne "U" de ma plage filtrée.

A savoir que le code suivant me renvoie systématiquement une erreur (14, 13, ou 9) et qu'après des heures de modifications et de recherches sur internet, je reste loin du résultat escompté.

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
 
 
Sub EnvoiMailRelanceTvx()
 
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String
Dim message As String
Dim sujet As String
 
Dim appOutlook As Outlook.Application
 
Dim TCD As Range, Cell As Range
Dim Plage As Range
Dim Var As String
 
'Si une erreur survient, on va à la ligne "errorHandler"
On Error GoTo errorHandler
 
    If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    Set TCD = Range("B3:V" & Range("B65536").End(xlUp).Row)
    TCD.AutoFilter Field:=14, Criteria1:="=CTM" 'Tri sur destinataire = CTM
    TCD.AutoFilter Field:=13, Criteria1:="=" 'Tri sur date de réalisation non renseignée
    TCD.AutoFilter Field:=12, Criteria1:="<" & Format(Date, "mm/dd/yy") 'Tri sur date de fin d'exécution prévisionnelle dépassée
 
    Set Plage = Range("a3:v" & Range("a65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
 
    For i = 3 To Plage("a" & Rows.Count).End(xlUp).Row
    'Définition de la plage de test (de la 3ème ligne jusqu'à première cellule vide de la colonne b)
        Range("u" & i).Value = Format(Now(), "dd/mm/yyyy")
        'lorsqu 'un mail a été envoyé, la cellule en u est remplie avec la date d'envoi du mail afin d'éviter l'envoi de plusieurs mails
        Var = Range("o" & i).Value
    Next i
 
 
Set appOutlook = CreateObject("Outlook.Application")
 
If Not (appOutlook Is Nothing) Then
 
    sujet = "URGENT : dates prévisionnelles d'interventions dépassées !" 'Définition du sujet du mail
    adresse = Var 'Recherche l'adresse mail du destinataire
 
 
    'Définition du message
    message = "Bonjour, " & vbCrLf & vbCrLf & _
        "Nous vous informons que blablabla ... " & vbCrLf & _
        "Le sécrétariat."
 
    'Paramètres de l'application mail
    Set OutlookApp = CreateObject("outlook.application")
    Set OutlookMail = OutlookApp.CreateItem(0)
            With OutlookMail
            .Subject = sujet
            .To = adresse
            .body = message
            .send 'Envoi du mail
            End With
End If
 
errorHandler:
            If Err.Number <> 0 Then
                MsgBox "Envoi msg : " & Err.Number
                '"Impossible d'effectuer cette opération !" & vbCrLf & "Merci de vérifier que Microsoft Outlook est bien ouvert !" & vbCrLf & _
                '"Aucun mail n'a été envoyé !", vbCritical, "Attention !"
            End If
 
End Sub
En vous remerciant de votre aide par avance,

Cordialement.