msgbox dans une boucle

  • Initiateur de la discussion Initiateur de la discussion Pasbleau
  • 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 !

P

Pasbleau

Guest
Bonjour le forum.

J'ai souhaite, à l'ouverture d'un fichier, qu'une (ou plusieurs) msgbox s'affiche si certaines dates datent de plus de 45 jours. J'ai pour cela réalisé ce code, mais qui ne fonctionne pas. Je pense que le problème vient du fait que la msgbox s'affiche mais qu'elle ne reste pas à l'écran puisque la boucle continue de tourner. J'aimerais que la boucle s'arrête après l'affichage de ma msgbox et reparte au moment ou je clique sur OK (puis se réafiche si une autre date antérieur à 45 jours a été trouvée).

Je vous transmet le code.

Merci d'avance !


Code:
Private Sub Workbook_Open()

Dim ligne As Integer, fin As Integer
fin = Sheets("registre de suivi").Range("b65536").End(xlUp).Row

For ligne = 137 To ligne = fin
If Sheets("registre de suivi").Range("G" & ligne) < Date - 45 Then MsgBox ("hello")
Next ligne

End Sub
 
Re : msgbox dans une boucle

Bonjour,

sans fichier, pas évident de te venir en aide. A tout hasard, je te propose ceci :
VB:
Private Sub Workbook_Open()
Dim c as range
set c = Sheets("registre de suivi").Range("G137")

Do while c <> ""
  If cdate(c) < Date - 45 Then MsgBox ("hello")
Loop

End Sub
 
Re : msgbox dans une boucle

Bonjour.
Non ça vient de :
For ligne = 137 To ligne = fin
C'est :
VB:
For ligne = 137 To fin
Ça ne signale pas d'erreur de compile car "ligne = fin" est une expression Boolean valant False, qui, convertie en numérique, vaut 0. La valeur de début étant supérieure à cette valeur de fin, il n'exécute pas du tout la boucle.
Cordialement.
 
Re : msgbox dans une boucle

Bonjour PasBleau,

Ton soucis ne viendrais pas du point suivant :
-> Ta Boucle For... To ... Next
Cette boucle s'écrit de la façon suivant :
For TaVariable = ChiffreDeDépart To ChiffreDeFin
...
Next TaVariable

Ce qui dans ton cas donnerais ceci :
Private Sub Workbook_Open()

Dim ligne As Integer, fin As Integer
fin = Sheets("registre de suivi").Range("b65536").End(xlUp).Row

For ligne = 137 To fin
If Sheets("registre de suivi").Range("G" & ligne) < Date - 45 Then MsgBox ("hello")
Next ligne

End Sub

Tu as vu la différence? J'ai supprimé le deuxième "ligne ="

A aucun moment tu n'as mis de valeur dans ta variable "Date", donc je suppose qu'il s'agit d'une cellule que tu as nommé "Date"?

Si oui, voici ta macro corrigé, un peu raccourci :
VB:
Private Sub Workbook_Open()

Dim ligne As Integer, fin As Integer

fin = Sheets("registre de suivi").[B65536].End(xlUp).Row

For ligne = 137 To fin
    If Sheets("registre de suivi").Range("G" & ligne) < Date - 45 Then MsgBox "La ligne suivante a dépassé la date limite : " & ligne
Next ligne

End Sub

Excuse, je n'ai pu m’empêcher de personnaliser le message de ta MsgBox lol

Bonne fin d'après midi

Edition : salut SoftMan, Dranreb
 
Re : msgbox dans une boucle

Merci à tous, c'était bien un problème dans l'énonciation de ma boucle ! Les réponses de Dranreb et Excel-lent (très juste personnalisation de ma msgbox ^^) sont la solution ! A force de lire mon code, je n'avais même pas vu que c'était aussi simple.
Au passage, pour Excel-lent, "Date" ne correspond pas à une cellule nommée. C'est la date du système qui est automatiquement contenu dans ce mot par excel. Voila ...

Merci pour vos rapides réponses, problème RESOLU
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

W
  • Résolu(e)
Réponses
17
Affichages
2 K
Retour