Alerte MSG selon date en VB

  • Initiateur de la discussion Initiateur de la discussion incubus20851
  • Date de début Date de début

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 !

incubus20851

XLDnaute Occasionnel
Bonjour,

j'ai un tableau avec des dates de fin, et à l'ouverture j'aimerais que si la date de fin est dans 3 jour par rapport à la date du jour faire un message d'alerte jusqu'à ce qu'une cellule soit remplie.

Voici mon code :
Code:
Private Sub Workbook_Open()
Dim Cell As Range
    For Each Cell In Sheets("BD").Range("A2" & ":A" & Range("A65536").End(xlUp).Row)
        If CLng(Cell.Offset(0, 3)) - 3 > CLng(Date) Then 'là j'aimerais l'alerte à partir de 3 jours avant la date de fin
            MsgBox " L'agent : " & Cell & " finit son contrat le : " & CDate(Cell.Offset(0, 3))
        If Cell.Offset(0, 5) = "X" Then ' Quand la cellule contient le X ne pas envoyé le message et passé à la ligne suivante
        Exit Sub
            End If
        End If
    Next
End Sub

Le soucis c'est que même quand y'a le "X" le message s'affiche quand même. Et le deuxieme soucis c'est que la date de fin - 3 ne marche pas. Cela marque que si la date de fin de contrat est supérieur à la date du jour

Merci d'avance pour vos réponses
A bientôt
 
Re : Alerte MSG selon date en VB

Hmmm ça fait des heures que je cherchent et je trouve rien qui convienne.

J'aimerais seulement colorier les lignes entre la colonne A à S qui remplisse les conditions d'affichage de la Msgbox.

Si quelqu'un peut m'aider ça serait chouette.

j'ai juste cette ligne de code
Code:
Cell.Interior.ColorIndex = 44
mais ça me colore que la celulle définit dans la variable. Comment gérér plusieurs variables ?

Merci
 
Re : Alerte MSG selon date en VB

Bonjour incubus20851, le fil, le forum


Voici comment j'écrirai ton code

EDITION: j'ai ajouté la mise en couleur (voir ligne bleue)
j'ai mis en commentaire le code relatif à la protection pour éviter qu'Excel bronche
Code:
Dim Cell As Range, alerte$ 'Déclarations des variables

With Sheets("BD")
'.EnableOutlining = True
'.Protect "BD", , , , True
    Set Plage = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
    For Each Cell In Plage
        With Cell
            If .Offset(, 3) - 2 <= Date Then
            If .Offset(, 8) <> "AVENANT" Then
            If .Offset(, 9) = "" Then
            alerte = _
                    alerte & "L'agent : " & .Value & " " & .Offset(0, 1) _
                    & " finit son contrat le : " & CDate(.Offset(0, 3)) & vbLf
           [COLOR=Blue] Union(.Offset(, 3), .Offset(, 8), .Offset(, 9)).Interior.ColorIndex = 44[/COLOR]
                Else
                If .Offset(0, 3) - 2 > Date Then
                Exit Sub
                End If: End If: End If: End If
        End With
    Next
End With

MsgBox alerte, vbCritical, "ATTENTION"
 
Dernière édition:
- 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

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
269
Réponses
5
Affichages
715
Réponses
41
Affichages
895
Réponses
2
Affichages
333
Retour