Créer une alerte à l'ouverture d'Excel suivant une date

Bonjour à tous,

Je reviens une nouvelle fois vers vous pour vous demander s'il est possible de créer une alerte à l'ouverture d'Excel suivant une date.

Je m'explique, je possède un fichier avec des dates de contrat de travail, j'ai déjà créé une mise en forme conditionnelle qui me fait apparaitre la date en rouge lorsque celle-ci est comprise entre J (aujourd'hui) et J-3.

Le problème c'est que j'ai tellement de lignes, si un contrat était de longue durée il se retrouve au dessus de ma vision du tableau ce qui m'oblige a repassé tout mon tableau.

J'aimerais donc, tout comme ma mise en forme conditionnelle, que lorsque j'ouvre mon fichier une alerte s'affiche lorsque les dates de la colonne H sont comprise entre J-3 et J et reprenne le nom de famille associé à cette même ligne qui se trouve dans la colonne B.

J'espère être explicite.

Merci d'avance et bonne journée à tous.

Salut thoumas79,

à adapter avant de coller cette macro telle quelle dans le module VBA de 'ThisWorkbook'

- corriger le nom de la feuille devant être scannée ;

With Worksheets("XXX")

- vérifier le n° de ligne de début des données ;

.Range("A2:H" &

- l'exactitude de ceci dépend de la donnée précédente, évidemment.

sMsg & "Ligne : " & x + 1

Private Sub Workbook_Open()
'
Dim tTab, sMsg$
'
With Worksheets("XXX")
    tTab = .Range("A2:H" & .Range("A" & Rows.Count).End(xlUp).Row).Value
    For x = 1 To UBound(tTab, 1)
        If DateDiff("d", Date, CDate(tTab(x, 8))) <= 3 Then sMsg = sMsg & "Ligne : " & x + 1 & "  " & tTab(x, 8) & "  " & tTab(x, 2) & Chr(10)
    Next
    MsgBox IIf(sMsg = "", "Pas de contrat à échéance !", sMsg), vbInformation + vbOKOnly, "Échéances"
End With
'
End Sub

Devrait être bon mais, à tester...

A+

Bonjour curulis 57,

Je te remercie grandement pour ta réponse par contre je ne sais pas du tout gérer VBA.

Si je te joint mon fichier pourrait-tu le transposer directement?

Je précise bien que les dates à prendre en compte sur celles de la colonne H et les noms à reprendre (dans l'idéal) sont ceux de la colonne B (que j'ai modifié volontairement).

Merci d'avance.

51suivi-cdd.xlsx (100.42 Ko)

Salut thoumas79,

voilà... Il fallait tester, effectivement, pour avoir le bon résultat !

La macro démarre à l'ouverture du fichier, uniquement !

Ton fichier doit maintenant garder son extension .XLSM pour supporter les macros ce qui n'empêche en rien l'usage des formules, etc...

Si tu veux visualiser :

  • ALT-F11 pour entrer dans l'éditeur VBA ;
  • double-cliquer sur le nom de la feuille à gauche dans l'explorateur de projet.
Bienvenue dans le monde magique de VBA!
Private Sub Workbook_Open()
'
Dim tTab, iNb%, sMsg$
'
With Worksheets("Suivi CDD")
    tTab = .Range("A2:H" & .Range("A" & Rows.Count).End(xlUp).Row).Value
    For x = 1 To UBound(tTab, 1)
        iNb = DateDiff("d", Date, CDate(tTab(x, 8)))
        If iNb >= 0 And iNb <= 3 Then sMsg = sMsg & "Ligne : " & x + 1 & "  " & tTab(x, 8) & "  " & tTab(x, 2) & Chr(10)
    Next
    MsgBox IIf(sMsg = "", "Pas de contrat à échéance !", sMsg), vbInformation + vbOKOnly, "Échéances"
End With
'
End Sub

A+

45suivi-cdd.xlsm (103.24 Ko)

Curulis57,

Merci beaucoup pour cette ébauche. Ebauche en effet car j'ai une légère remarque. Si j'ai plusieurs dates qui rentrent dans la condition, l'avertissement se déclenche que pour une seule ligne. Or j'aurais aimé soit avoir une alerte par personne ou encore mieux une seule alerte avec toutes les lignes (et donc les noms associés) concernées par la condition.

Désolé de vous embêtez avec mes petites histoires

D'avance merci!

M'embête pas !

J'avoue ne pas avoir poussé les tests, pris par le temps...

Je rentre d'ici une bonne heure et je traque la bête !

A+

Salut thoumas79,

je viens de changer quelques dates dans ta BDD, relancer la machine, pas de souci : toutes les lignes concernées sont bien reprises dans la MsgBox !

Je ne vois pas quoi te dire : est-ce bien le même fichier, mêmes colonnes ?

A+

Alors je viens de faire le test de mon côté voilà ce qui en ressort :

Jusqu'à la ligne 102, aucun problème si je met la date 31/01/20 par exemple cela fonctionne bien. J'ai bien plusieurs lignes qui s'affichent dans l'alerte si il y a plusieurs dates.

Au delà, donc à partir de la ligne 103 si je met la date 31/01/20 par exemple, il ne ce passe plus rien. Du moins j'ai simplement le message "pas de contrat à échéance".

Merci.

Salut

déso, c'est encore moi qui porte le bonnet d'âne...

Private Sub Workbook_Open()
'
Dim tTab, iNb%, sMsg$
'
With Worksheets("Suivi CDD")
    tTab = .Range("A2:H" & .Range("B" & Rows.Count).End(xlUp).Row).Value
    For x = 1 To UBound(tTab, 1)
        If IsDate(tTab(x, 8)) Then
            iNb = DateDiff("d", Date, CDate(tTab(x, 8)))
            If iNb >= 0 And iNb <= 3 Then sMsg = sMsg & "Ligne : " & Format(x + 1, "000") & "  " & tTab(x, 8) & "  " & tTab(x, 2) & Chr(10)
        End If
    Next
    MsgBox IIf(sMsg = "", "Pas de contrat à échéance !", sMsg), vbInformation + vbOKOnly, "Échéances"
End With
'
End Sub

A+

75suivi-cdd.xlsm (103.04 Ko)

PERFECT !!!

Merci beaucoup curulis57 !! Et chapeau parce que ce genre de langage... pfiou je ne sais pas comment vous y arrivez!

Bonne soirée et à bientôt pour de nouvelles résolutions toujours aussi rapide sur ce forum!

Thomas

Rechercher des sujets similaires à "creer alerte ouverture suivant date"