Envoi email automatique dès changement d'état de la cellule

Hello la team !
Je bloque sur un problème.

Dès qu'une valeur apparait dans la colonne G "Gestionnaire", j'aimerai qu'un mail soit envoyé automatiquement à l'adresse mail qui apparait dans la colonne B, avec dans le corps du mail les infos des colonnes D et E.

Mais je sèche..
Y a t'il quelqu'un pour un tuyau svp.

Merci beaucoup !

4test-email.xlsx (10.92 Ko)

Bonjour,

Une solution possible.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim cel As Range
    Dim OutApp As Object
    Dim OutMail As Object
    Dim MailSubject As String
    Dim MailBody As String

    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("NomDeVotreFeuille") ' Remplacez par le nom de votre feuille

    ' Vérifier si une modification a été apportée dans la colonne G "Gestionnaire"
    If Not Intersect(Target, ws.Range("G:G")) Is Nothing Then
        ' Itérer à travers les cellules modifiées
        For Each cel In Target
            If cel.Value <> "" Then ' Vérifier si la cellule n'est pas vide
                ' Récupérer les informations des colonnes D et E
                MailSubject = "Sujet du courriel" ' Remplacez par le sujet souhaité
                MailBody = "Informations : " & cel.Offset(0, -3).Value & vbCrLf & _
                           "Plus d'infos : " & cel.Offset(0, -2).Value

                ' Créer une application Outlook
                Set OutApp = CreateObject("Outlook.Application")
                Set OutMail = OutApp.CreateItem(0) ' Type 0 correspond à un nouveau message

                ' Remplacer "AdresseEmailDestinataire" par la colonne B du gestionnaire
                With OutMail
                    .To = cel.Offset(0, -5).Value ' Adresse email du destinataire
                    .Subject = MailSubject
                    .Body = MailBody
                    .Display ' Afficher le courriel (pour vérification) ou .Send pour l'envoyer directement
                End With

                ' Libérer les objets Outlook
                Set OutMail = Nothing
                Set OutApp = Nothing
            End If
        Next cel
    End If
End Sub

Bonjour le fil et le Forum,

comme l'instruction est exécutée suite à un événement sur une feuille particulière, il n'est pas nécessaire qu'elle soit définie dans le code. On n'as pas non plus besoin d'une boucle.

Dans le module de la feuille (pas dans un module standard, voir ici pour en savoir plus https://www.excel-pratique.com/fr/vba/evenements_feuille), voici le code mis à jour

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    'Dim cel As Range
    Dim OutApp As Object
    Dim OutMail As Object
    Dim MailSubject As String
    Dim MailBody As String

'    ' Définir la feuille de calcul
'    Set ws = ThisWorkbook.Sheets("NomDeVotreFeuille") ' Remplacez par le nom de votre feuille

    ' Vérifier si une modification a été apportée dans la colonne G "Gestionnaire"
    If Not Intersect(Target, Range("G:G")) Is Nothing Then
        ' Itérer à travers les cellules modifiées
       ' For Each cel In Target
            If Target.Value <> "" Then ' Vérifier si la cellule n'est pas vide
                ' Récupérer les informations des colonnes D et E
                MailSubject = "Sujet du courriel" ' Remplacez par le sujet souhaité
                MailBody = "Informations : " & Target.Offset(0, -3).Value & vbCrLf & _
                           "Plus d'infos : " & Target.Offset(0, -2).Value

                ' Créer une application Outlook
                Set OutApp = CreateObject("Outlook.Application")
                Set OutMail = OutApp.CreateItem(0) ' Type 0 correspond à un nouveau message

                ' Remplacer "AdresseEmailDestinataire" par la colonne B du gestionnaire
                With OutMail
                    .To = Target.Offset(0, -5).Value ' Adresse email du destinataire
                    .Subject = MailSubject
                    .Body = MailBody
                    .Display ' Afficher le courriel (pour vérification) ou .Send pour l'envoyer directement
                End With

                ' Libérer les objets Outlook
                Set OutMail = Nothing
                Set OutApp = Nothing
            End If
        'Next cel
    End If
End Sub
Rechercher des sujets similaires à "envoi email automatique changement etat"