Mise en forme conditionnelle avec envoi de courriel possible ?

Bonjour,

Je suis plutôt novice dans la maitrise d'excel mais je bricole des macros ou des formules au besoin

J'essaie d'améliorer certains de nos indicateurs et méthode d'alerte dans une des entreprises ou j'interviens...

J'ai un tableau avec des dates et une mise en forme conditionnel qui va faire passer la case en rouge à moins de 6 mois de la date en question, ce qui nous indique visuellement un point de vigilance.

Mais je ne sais pas si c'est possible...? Serait-il possible que cela soit accompagné d'une méthode d'alerte comme l'envoi d'un courriel à une personne x quand la case passe en rouge.

Ou si vous avez d'autres suggestions.

Merci par avance.

Bonjour,

Il n'est pas possible de déclencher un courriel via une mise en forme conditionnelle.

Il faut retester dans une procédure "Sub" les conditions de mise en forme pour l'envoi du courriel.

D'accord, mais est-il possible de déclencher un envoi unique de courriel qui serait conditionné par le passage de la case en rouge ?

Dès que la case passerait en rouge, dans l'idéal j'aimerais qu'un mail soit envoyé à une adresse mail définie avec rappel du nom correspondant à la cellule A23 (c'est un exemple en imaginant que les noms des différentes personnes soit en colonne A) ?

Il faudrait passer par l'onglet Développeur et créer un code pour le document dans son ensemble selon vous ?

et quelle serait un exemple de contenu de ce type de codification ?

Merci.

Bonjour,

Dès que la case passerait en rouge

Il faut reprendre votre condition de passage en rouge dans la procédure évènementielle d'ouverture de votre classeur (ThisWorkbook.Workbook_Open) et y programmer l'envoi du courriel.

J'ai trouvé un exemple de code sur ce même forum mais apparemment conditionné par une date (finalement la mise en forme conditionnelle est conditionnée par la date)

Voici le code potentiel:

Sub EnvoiSimple()

'déclaration des variables

Dim OutApp As Object

Dim OutMail As Object

'

DerL = Range("A" & Rows.Count).End(xlUp).Row

corps = ""

entete = " Date " & " EAN " & " Qté " & " Intitulé" & Chr(13)

For i = 2 To DerL

If ThisWorkbook.Sheets("Feuil2").Range("F" & i) = "1" Then

corps = corps & ThisWorkbook.Sheets("Feuil2").Range("C" & i).Value & " - " _

& ThisWorkbook.Sheets("Feuil2").Range("A" & i).Value & " - " _

& ThisWorkbook.Sheets("Feuil2").Range("D" & i).Value & " - " _

& ThisWorkbook.Sheets("Feuil2").Range("B" & i).Value & Chr(13)

End If

Next i

Set OutApp = CreateObject("Outlook.Application")

Set OutMail = OutApp.CreateItem(0)

On Error Resume Next

With OutMail

'destinataires

'.From = "Essai from"

'.To = ThisWorkbook.Sheets("Feuil2").Range("L1").Value

.To = "monmail@gmail.com" & ";" & "mailboss@free.fr"

'.CC = ThisWorkbook.Sheets("Envoi Mail").Range("B3").Value

'.BCC = ""

'objet du mail

.Subject = "Alerte produit presque périmés"

' corps du message

.Body = entete & corps

' fichier en pièce jointe

'Feuile de calcul

'.Attachments.Add ActiveWorkbook.FullName

'Fichier du disque dur

'.Attachments.Add "C:\****\****\****\**\NomFichier.Ext"

'Ou

'.Attachments.Add ThisWorkbook.Sheets("Feuil1").Range("H20").Value

.Send

End With

On Error GoTo 0

Set OutMail = Nothing

Set OutApp = Nothing

'fermer le classeur à la fin

'ThisWorkbook.Close

End Sub

'

Est-ce que je pourrais utiliser ce code en changeant évidement les paramètres selon mon contexte de travail ?...

J'ai un peu de mal à identifier dans ce code que devrais-je remplacer par contre pour conditionner l'envoi via la couleur de la cellule...

Bonjour,

Sans un tableau exemple de votre problème, je vous donne quelques conseils de base :

1- transformer votre tableau en objet tableau (menu Insertion --> bouton Tableau), ce qui simplifiera le code.

2 - créer un module d'envoi de mail avec les paramètres nécessaires, exemple :

Sub envoi_mail(ByVal destinataire_A As String, ByVal objet As String, ByVal html_texte As String, ByVal erreur As Boolean, Optional ByVal destinataire_CC As Variant, Optional pièce_jointe As Variant)
    Dim olk As Object, Email As Object

    On Error Resume Next
    erreur = False

    'Assignation de l'application Outlook et de l'objet Email
    Set olk = CreateObject("outlook.application")
    Set Email = olk.CreateItem(0)

    With Email
        '....... remplissage objet, message, destinataire_A, et destinataire_CC + pièce jointe si présents
        .Subject = objet
        .HTMLBody = html_texte
        .to = destinataire_A
        If Not IsMissing(destinataire_CC) Then .CC = destinataire_CC
        If Not IsMissing(pièce_jointe) Then .Attachments.Add pièce_jointe

        '....... envoie le message
        .Send
        If Err.Number <> 0 Then erreur = True
    End With

    'Désassignation objets
     Set olk = Nothing
     Set Email = Nothing

End Sub

3- utiliser la procédure événementielle d'ouverture de votre classeur pour appeler la procédure d'envoi du mail selon condition de date

Private Sub Workbook_Open()

    '// boucle sur vos dates d'alerte
    'si une date d'alerte remplit la condition de passage au rouge, alors :
    Call envoi_mail (paramètres)

End Sub

Merci Thev pour ces précisions pointues

Bonjour.

Je suis dans un cas un peu simailaire où il faudrait que l'envoi de mail se fasse par dépassement d'une valeur dans une colonne et par copie de la ligne de cette valeur (pour avoir les infos correspondantes).

Jusqu'à présent j'ai ce qu'il faut mais je suis obligé de rentrer manuellement mon range.

Rechercher des sujets similaires à "mise forme conditionnelle envoi courriel possible"