msgbox dans une boucle

Pasbleau

XLDnaute Nouveau
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
 

Softmama

XLDnaute Accro
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
 

Dranreb

XLDnaute Barbatruc
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.
 

Excel-lent

XLDnaute Barbatruc
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
 

Pasbleau

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
17
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom