créer une alerte lorsqu'une date a été renseignée dans une cellule

lobita3

XLDnaute Nouveau
Bonjour,

Est-il possible, de manière assez simple car je débute en programmation, de créer une alerte (voire plusieurs) à l'ouverture d'un fichier Excel, lorsque des dates ont été renseignées dans des cellules définies?
Autre solution envisagée, envoyer un mail automatique Outlook à une liste de distribution lorsqu'une date a été renseignée dans le fichier Excel.
Je voudrais simplement prévenir les équipes qu'ils ont une action à mener car une date a été définie dans le fichier.
Si vous avez des propositions à me faire, je suis preneuse!

Merci d'avance!!!!! :)
 

thebenoit59

XLDnaute Accro
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Bonjour lobita.

Oui il est possible de créer ce style d'alerte à l'ouverture du fichier.
Pour ce qui est d'envoyer un mail, je ne sais pas y faire ...
Si tu as un fichier exemple à fournir nous pourrons regarder de plus près.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Bonjour Lobita, bonjour le forum,

Imaginons que ton tableau commence en A1 avec les étiquettes en première ligne, sans colonne ou lignes complètement vide au milieu. Et que les dates se trouvent dans la colonne C. Tout ça dans l'onglet Feuil1...
Sinon tu adapteras ou tu feras l'effort d'être un peu plus explicite...

Code:
Private Sub Workbook_Open()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim MSG As String 'déclare la variable MSG (MeSsaGe)

Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne sI du tableau des valeur TV (en partant de la seconde)
    'si la donnée ligne I colonne 3 de TV est une date, définit le message MSG
    If IsDate(TV(I, 3)) Then MSG = IIf(MSG = "", TV(I, 3) & " en ligne " & I, MSG & Chr(10) & TV(I, 3) & " en ligne " & I)
Next I 'prochaine ligne de la boucle
MsgBox MSG 'affiche le message MSG
End Sub

[Édition]
Bonjour thebenoit, nos posts se sont croisés...
 
Dernière édition:

lobita3

XLDnaute Nouveau
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Merci à tous les 2 pour vos réponses rapides.
Je vous joins mon fichier simplifié et vidé de mes données.
Il s'agit donc d'un fichier partagé dans lequel différents services vont venir renseigner des informations.
Aujourd'hui lorsqu'une personne renseigne une date dans le fichier, elle envoie un mail au service voisin pour les informer qu'une date a été mise à jour dans le planning et qu'ils ont une action à faire.
Pour éviter l'envoi de ces mails (car trop d'oublis), je me demandais si on pouvait créer des alertes lorsque certaines cellules sont renseignées.
Par exemple ici lorsque le service 1 met une date en cellule AD9, il faut que le service 2, le service 3 et d'autres services concernés soient informés. Ils viendront alors à leur tour renseigner une date en cellule AF9, et ainsi de suite...
J'espère que mes explications sont suffisamment claires et que vous pourrez me guider dans une solution pas trop lourde à mettre en place.

Merci beaucoup!
 

Pièces jointes

  • Alerte sur date renseignée.xls
    51 KB · Affichages: 48

Robert

XLDnaute Barbatruc
Repose en paix
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Bonjour le fil, bonjour le forum

Le code adapté a ton fichier :

Code:
Private Sub Workbook_Open()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim MSG As String 'déclare la variable MSG (MeSsaGe)
Dim S As String 'déclare la varaible S

MSG = "ATTENTION !" & Chr(10) 'initialise le message MSG
Set O = Worksheets("Planning") 'définit l'onglet O
TV = O.Range("AD7").CurrentRegion 'définit le tableau des valeurs TV
For I = 3 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeur TV (en partant de la troisième)
    If IsDate(TV(I, 1)) Then 'condition : si la donnée ligne I colonne 1 de TV est une date
        S = "Service 1" 'définit le service S
        MSG = MSG & Chr(10) & "Le " & S & " a édité une date en ligne " & I + 6 & " !" 'message
        O.Cells(I + 6, 31).Interior.ColorIndex = 3 'colore la cellule d'alerte de rouge
    End If 'fin de la condition
    If IsDate(TV(I, 3)) Then 'condition : si la donnée ligne I colonne 1 de TV est une date
        S = "Service 2" 'définit le service S
        MSG = MSG & Chr(10) & "Le " & S & " a édité une date en ligne " & I + 6 & " !"
        O.Cells(I + 6, 33).Interior.ColorIndex = 3 'colore la cellule d'alerte de rouge
    End If 'fin de la condition
    If IsDate(TV(I, 5)) Then 'condition : si la donnée ligne I colonne 1 de TV est une date
        S = "Service 3" 'définit le service S
        MSG = MSG & Chr(10) & "Le " & S & " a édité une date en ligne " & I + 6 & " !"
        O.Cells(I + 6, 35).Interior.ColorIndex = 3 'colore la cellule d'alerte de rouge
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
MsgBox MSG 'affiche le message MSG
End Sub

Pour supprimer la couleur rouge sur les cellules d'alerte, tu peux rajouter dans le composant Feuil1(Planning) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex = 3 Then Target.Interior.ColorIndex = xlNone
End Sub
 

lobita3

XLDnaute Nouveau
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Waouh, merci, c'est plus complexe que ce que j'imaginais, du moins ca parait complexe quand on n'est pas familier de la programmation.
Du coup j'ai une nouvelle question : je ne peux voir le message d'alerte qu'à l'exécution de la macro?
Par exemple si une date a été renseignée dans le fichier, je n'ai pas d'alerte à l'ouverture du fichier, je suis obligée de lancer la macro pour savoir, c'est bien cela?
Merci beaucoup pour le code!
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Bonjour Lobita, bonjour le forum,

Non, le message se lance à l'ouverture du classeur : Private Sub Workbook_Open() ! L'autre petit code est juste pour supprimer la couleur rouge, dans les cellules d'alerte, qui apparaît si il y a message...

Le code paraît compliqué mais en fait il ne fait que vérifier si il y a une date dans les trois colonnes et, pour afficher un message clair en allant à la ligne chaque fois, j'ai rajouté une variable S et compliqué un tout petit peu. Mais ce n'était pas nécessaire... Ensuite le code colore de rouge les cellules d'alerte pour attirer l'attention des services...

Le code se trouve dans le composant ThisWorkbook. En pièce jointe ton fichier avec le code...


 

Pièces jointes

  • Lobita_v01.xlsm
    12.8 KB · Affichages: 43
Dernière édition:

lobita3

XLDnaute Nouveau
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Merci pour les explications. Le fichier joint est vierge. J'ai essayé de l'ouvrir avec ma version 2013 et avec une autre version 2007 et je ne vois rien dans aucune des feuilles, ni mes données ni le code :-(
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : créer une alerte lorsqu'une date a été renseignée dans une cellule

Mais quel g***d !

Désolé petite louve je navet* pas mis le bon fichier... Erreur réparée !

(*si, si, dans ce cas on peut...)
 

Pièces jointes

  • Lobita_v02.xls
    62.5 KB · Affichages: 58

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 821
dernier inscrit
hybroxis