MsgBox à l'ouverture du fichier si cellule comprise entre 0 et 21

ophelie.brghl

XLDnaute Nouveau
Bonjour à tous,

Mon classeur est un calendrier regroupant toutes les manifestations qui auront lieu dans mon village au cours de l'année. J'ai inséré la date d'aujourd'hui, et j'ai fait une colonne où l'on m'indique combien de jours il y a entre la date d'aujourd'hui et la date de l'évènement. Ce que je voudrais, c'est que lorsqu'il ne reste que 21 jours et moins, une msgbox s'ouvre à l'ouverture du classeur pour me dire qu'il ne reste que 3 semaines et qu'il est temps de réaliser les affiches.

Ma macro pour le moment ressemble à çà :

Private Sub Workbook_Open()

If 0 <= Val(Range("K" & Rows.Count).Value) <= 21 Then
boite = MsgBox("Des évènements auront lieu dans les 3 prochaines semaines! Pensez à réaliser les affiches!", vbExclamation, "Alerte évènements")
End If

If 0 > Val(Range("K" & Rows.Count).Value) > 21 Then
boite = MsgBox("Aucun évènement dans les prochains jours.", vbInformation, "Alerte événement!")

End If

End Sub



Elle fonctionne, mais mon problème est que la msgbox s'ouvre à chaque ouverture du classeur et non lorsque l'évènement se rapproche. Si quelqu'un pouvait me secourir sur çà, je lui serai reconnaissante éternellement parce qu'àprès 2 jours de recherche je commence réellement à désespérer ! :(

Merci à tous!
 

Pièces jointes

  • Calendrier com événements.xlsm
    75.4 KB · Affichages: 35

JM27

XLDnaute Barbatruc
Re : MsgBox à l'ouverture du fichier si cellule comprise entre 0 et 21

Bonjour

peut être comme cela en traitant sur la feuille année

Code:
Private Sub Workbook_Open() 
   With Sheets("A l'année")
            For Each Cell In .Range("B4:M34")
                    If Cell <> "" Then
                        If CDate(Cell.Row - 3 & "/" & Cell.Column - 1 & "/" & .Range("C1")) < Date + 21 And CDate(Cell.Row - 3 & "/" & Cell.Column - 1 & "/" & .Range("C1")) > Date Then
                            Message = Message & Chr(10) & Cell & Chr(10)
                        End If
                    End If
            Next
            If Message <> "" Then
                    MsgBox "Liste des évènements dans les 21 jours " & Chr(10) & Message
            Else
                MsgBox " pas d'évènements"
            End If
    End With
End Sub

pour info: tu peux jouer sur le type d’événement : par exemple ceux liées aux feuilles si tu ne souhaites pas que cela soit liée à l'ouverture du classeur.( ta demande n'est pas très claire : quand souhaites tu avoir le contrôle et le message éventuel?)

éventuellement tu peux virer :
Else
MsgBox " pas d'évènements"
 
Dernière modification par un modérateur:

ophelie.brghl

XLDnaute Nouveau
Re : MsgBox à l'ouverture du fichier si cellule comprise entre 0 et 21

Merci beaucoup pour cette réponse !!

En fait, ce fichier sera ouvert tous les jours par la même personne comme une sorte d'agenda. Donc le but est que chaque jour le classeur contrôle la date des évènements en fonction de celle du jour et qu'une alerte apparait, uniquement lorsqu'un évènement a lieu dans moins de 3 semaines, si possible à l'ouverture du classeur pour qu'elle puisse tout de suite savoir ce qu'elle à a faire. Mais je ne sais pas si c'est possible parce que je ne trouve pas d'exemple de macro sur internet, qui se déroule à l'ouverture du classeur et qui a une condition...

Je dois faire une erreur quelque part, j'ai mis ton code dans ma feuille "A l'année" et pourtant aucune MsgBox et aucun message d'erreur n'apparait... Sais-tu d'où çà peut provenir?
 

ophelie.brghl

XLDnaute Nouveau
Re : MsgBox à l'ouverture du fichier si cellule comprise entre 0 et 21

Bonjour à tous!
Je vous recontacte aujourd'hui au sujet de cette macro car j'ai un gros problème et mon stage se termine dans 1 semaine donc je n'ai qu'une semaine pour régler le problème ! :(

Depuis la dernière fois, je pensais que la macro fonctionnait car je recevait une MsgBox à l'ouverture me disant qu'aucun évènement n'était prévu mais aujourd'hui, alors que j'aurai du recevoir une alerte pour me dire qu'un évènement avait lieu dans 3 semaines, c'est la même alerte que d'habitude qui s'est affiché !

Le problème vient-t-il de la macro ou de mon classeur ? J'ai mis ce code (dans le Workbook):

Private Sub Workbook_Open()
With Sheets("A l'année")
For Each Cell In .Range("B4:M34")
If Cell <> "" Then
If CDate(Cell.Row - 3 & "/" & Cell.Column - 1 & "/" & .Range("C1")) < Date + 21 And CDate(Cell.Row - 3 & "/" & Cell.Column - 1 & "/" & .Range("C1")) > Date Then
Message = Message & Chr(10) & Cell & Chr(10)
End If
End If
Next
If Message <> "" Then
MsgBox "Liste des évènements dans les 21 jours " & Chr(10) & Message
Else
MsgBox " pas d'évènements"
End If
End With
End Sub

Merci de votre aide !
 

ophelie.brghl

XLDnaute Nouveau
Re : MsgBox à l'ouverture du fichier si cellule comprise entre 0 et 21

Encore une fois je rectifie moi même, désolé du dérangement :p
Pour ceux que cela intéresse, le problème (qui en fait n'en était pas un) venait de la macro, car elle prenait en compte les dates qui étaient inférieures à la date d'aujourd'hui + 21. J'ai juste changé le signe "<" pour mettre "<=" et elle fonctionne parfaitement !
Encore merci à JM27!
 

Discussions similaires

Statistiques des forums

Discussions
311 716
Messages
2 081 848
Membres
101 826
dernier inscrit
dododu89