XL 2016 Faire une alerte

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

marc94600

XLDnaute Occasionnel
Bonjour tout le monde
Je souhaiterai dans mon tableau Excel feuille "en cours à partir de 2019" créer une alerte (Prévenir David pour "la personne concernée ou numéro de ligne)lorsque la "date de fin de prorogation" colonne H arrive à H-2 mois .
Je vous remercie
Marc
 

Pièces jointes

Dernière édition:
Solution
On peut fixer la couleur par la mise en forme conditionnelle sans recours au code VBA avec la formule suivante :
Dans l'onglet -> Acceuil < mise en forme conditionnelle : autres règles
Taper la formule et sélectionner la couleur de ton choix
=ET(G2="RENOUVELLEMENT";(FIN.MOIS(H2;-2)<AUJOURDHUI()))

Ou exécuter ce code une seule fois pour définir par VBA la formule de la mise en forme sur la colonne H
VB:
Sub MiseEnFormeColonneH()
   Columns("H:H").FormatConditions.Delete
   With Columns("H:H").FormatConditions.Add( _
        Type:=xlExpression, Formula1:= _
        "=ET(G1=""RENOUVELLEMENT"";(FIN.MOIS(H1;-2)<AUJOURDHUI()))")
      .SetFirstPriority
      .Interior.Color = RGB(255, 150, 0) ' couleur marron
  End With
End Sub
...
Ma proposition est basée sur la coloration des cellules concernées qui s'approches au délais de deux mois donc elles ci sont en couleur de nuance rouge , les dates antérieures à la date d'aujourdhui sont en gris.

VB:
Sub TestDelais()
 Dim L As Long
 Dim D1, D2 
 Dim Feuil, cValue
 Set Feuil = Worksheets("En cours à partir de 2019")
 L = Feuil.Range("A" & Rows.Count).End(xlUp).Row
 D1 = WorksheetFunction.EoMonth(Date, 2)
 For i = 1 To L
    cValue = Feuil.Cells(i, 8)
    With Feuil.Cells(i, 8).Interior
        If IsDate(cValue) Then
           .Pattern = xlSolid
           D2 = CDate(cValue)
           If D2 < Date Then ' Date anterieure
             .ThemeColor = xlThemeColorAccent3
           ElseIf WorksheetFunction.EoMonth(D2, 0) <= D1 Then
              'MsgBox "Alerte échéance"
             .ThemeColor = xlThemeColorAccent2
           Else
             .ThemeColor = xlThemeColorAccent6
           End If
           .TintAndShade = 0.5
        Else
           .Pattern = xlNone
           .TintAndShade = 0
        End If
    End With
 Next
End Sub
 
Ma proposition est basée sur la coloration des cellules concernées qui s'approches au délais de deux mois donc elles ci sont en couleur de nuance rouge , les dates antérieures à la date d'aujourdhui sont en gris.

VB:
Sub TestDelais()
 Dim L As Long
 Dim D1, D2
 Dim Feuil, cValue
 Set Feuil = Worksheets("En cours à partir de 2019")
 L = Feuil.Range("A" & Rows.Count).End(xlUp).Row
 D1 = WorksheetFunction.EoMonth(Date, 2)
 For i = 1 To L
    cValue = Feuil.Cells(i, 8)
    With Feuil.Cells(i, 8).Interior
        If IsDate(cValue) Then
           .Pattern = xlSolid
           D2 = CDate(cValue)
           If D2 < Date Then ' Date anterieure
             .ThemeColor = xlThemeColorAccent3
           ElseIf WorksheetFunction.EoMonth(D2, 0) <= D1 Then
              'MsgBox "Alerte échéance"
             .ThemeColor = xlThemeColorAccent2
           Else
             .ThemeColor = xlThemeColorAccent6
           End If
           .TintAndShade = 0.5
        Else
           .Pattern = xlNone
           .TintAndShade = 0
        End If
    End With
 Next
End Sub
bonjour,
Dans le tableau que vous me proposez, j'ai bien une alerte message qui m'est proposée. En revanche je n'ai pas de couleur afficher. Peut on rectifier la formule car j'ai omis dans mon précédent message de dire :
SI en colonne "G" j'ai un RENOUVELLEMENT et que la "date de fin de prorogation" colonne H arrive à H-2 mois alors créer une alerte (Prévenir David pour "la personne concernée ou numéro de ligne).
Le principe de faire une alerte message et une coloration me plait beaucoup.
Merci et désolé de n'avoir pas pu répondre avant car j'étais malade.
 
On peut fixer la couleur par la mise en forme conditionnelle sans recours au code VBA avec la formule suivante :
Dans l'onglet -> Acceuil < mise en forme conditionnelle : autres règles
Taper la formule et sélectionner la couleur de ton choix
=ET(G2="RENOUVELLEMENT";(FIN.MOIS(H2;-2)<AUJOURDHUI()))

Ou exécuter ce code une seule fois pour définir par VBA la formule de la mise en forme sur la colonne H
VB:
Sub MiseEnFormeColonneH()
   Columns("H:H").FormatConditions.Delete
   With Columns("H:H").FormatConditions.Add( _
        Type:=xlExpression, Formula1:= _
        "=ET(G1=""RENOUVELLEMENT"";(FIN.MOIS(H1;-2)<AUJOURDHUI()))")
      .SetFirstPriority
      .Interior.Color = RGB(255, 150, 0) ' couleur marron
  End With
End Sub


Correction de l'ancien code pour la vérification de la cellule G

VB:
Sub TestDelais()
 Dim L As Long
 Dim D1, D2
 Dim Feuil, cValue
 Set Feuil = Worksheets("En cours à partir de 2019")
 L = Feuil.Range("A" & Rows.Count).End(xlUp).Row
 D1 = WorksheetFunction.EoMonth(Date, 2)
 For i = 2 To L
     With Feuil.Cells(i, 8).Interior
        If Feuil.Cells(i, 7) = "RENOUVELLEMENT" Then 'cellule G
            cValue = Feuil.Cells(i, 8)
            If IsDate(cValue) Then
               D2 = CDate(cValue)
               If D2 < Date Then ' Date anterieure
                 .Color = RGB(190, 190, 190)
               ElseIf WorksheetFunction.EoMonth(D2, 0) <= D1 Then
                  'MsgBox "Alerte échéance"
                 .Color = RGB(255, 150, 0)
               Else
                 .Color = RGB(120, 255, 150)
               End If
           End If
       Else
          .Pattern = xlNone
          .TintAndShade = 0
       End If
    End With
 Next
End Sub
 
On peut fixer la couleur par la mise en forme conditionnelle sans recours au code VBA avec la formule suivante :
Dans l'onglet -> Acceuil < mise en forme conditionnelle : autres règles
Taper la formule et sélectionner la couleur de ton choix
=ET(G2="RENOUVELLEMENT";(FIN.MOIS(H2;-2)<AUJOURDHUI()))

Ou exécuter ce code une seule fois pour définir par VBA la formule de la mise en forme sur la colonne H
VB:
Sub MiseEnFormeColonneH()
   Columns("H:H").FormatConditions.Delete
   With Columns("H:H").FormatConditions.Add( _
        Type:=xlExpression, Formula1:= _
        "=ET(G1=""RENOUVELLEMENT"";(FIN.MOIS(H1;-2)<AUJOURDHUI()))")
      .SetFirstPriority
      .Interior.Color = RGB(255, 150, 0) ' couleur marron
  End With
End Sub


Correction de l'ancien code pour la vérification de la cellule G

VB:
Sub TestDelais()
 Dim L As Long
 Dim D1, D2
 Dim Feuil, cValue
 Set Feuil = Worksheets("En cours à partir de 2019")
 L = Feuil.Range("A" & Rows.Count).End(xlUp).Row
 D1 = WorksheetFunction.EoMonth(Date, 2)
 For i = 2 To L
     With Feuil.Cells(i, 8).Interior
        If Feuil.Cells(i, 7) = "RENOUVELLEMENT" Then 'cellule G
            cValue = Feuil.Cells(i, 8)
            If IsDate(cValue) Then
               D2 = CDate(cValue)
               If D2 < Date Then ' Date anterieure
                 .Color = RGB(190, 190, 190)
               ElseIf WorksheetFunction.EoMonth(D2, 0) <= D1 Then
                  'MsgBox "Alerte échéance"
                 .Color = RGB(255, 150, 0)
               Else
                 .Color = RGB(120, 255, 150)
               End If
           End If
       Else
          .Pattern = xlNone
          .TintAndShade = 0
       End If
    End With
 Next
End Sub
SUPER...
Merci beaucoup cela m'aide pour mon travail
Je vous souhaite une bonne journée
Bien à vous
marc
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
23
Affichages
2 K
  • Question Question
Microsoft 365 alerte
Réponses
5
Affichages
328
Réponses
9
Affichages
479
Réponses
1
Affichages
166
Réponses
4
Affichages
330
Réponses
10
Affichages
605
Retour