Condition sur l'ouverture d'une MsgBox
Bonjour à tous,
Je vous écris car je rencontre un problème avec VBA que je n'arrive pas à résoudre.
(Le code en question est à la fin de mon message)
Il y a un "bouton" dans mon planning de révisions sur lequel je peux cliquer pour qu'il m'affiche dans des MsgBox ce que je dois faire aujourd'hui en fonction de la date et du nombre de vues.
Je m'explique : si je clique dessus et que je dois voir pour la deuxième fois "Cours 1" et "Cours 2" et pour la troisième fois "Cours 3", une première MsgBox va s'ouvrir contenant le message "Seconde vue pour aujourd'hui : Cours 1, Cours 2", et une seconde s'ouvrira à la fermeture de la première "Troisième vue pour aujourd'hui : Cours 3".
Lorsque j'ai vu un cours, celui-ci ne s'affiche plus dans la MsgBox, par exemple, si j'ai vu Cours 1, lorsque je cliquerai sur le bouton la MsgBox qui s'ouvrira ne contiendra plus que "Seconde vue pour aujourd'hui : Cours 2".
Ce que je souhaiterais faire, c'est ne pas ouvrir de MsgBox si tous les cours ont été vus, mais je n'y arrive absolument pas, n'étant pas très doué en VBA.
J'ai déjà essayé de mettre "If Not IsNull ("taches") Then" avant l'ouverture de la MsgBox mais ça ne fonctionne pas.
Je suis en fait limité par le fait que "MsgBox" doive rester après "Next n", sans quoi la MsgBox s'ouvre une fois par cours que j'ai à réviser ("Seconde vue pour aujourd'hui : Cours 1" "Seconde vue pour aujourd'hui : Cours 1, Cours 2").
C'est pourquoi je vous demande votre aide.
Merci d'avance.
Private Sub CommandButton1_Click()
taches = "Seconde vue pour aujourd'hui "
taches2 = "Troisième vue pour aujourd'hui"
taches3 = "Quatrième vue pour aujourd'hui"
taches4 = "Compléments pour aujourd'hui"
For n = 6 To 600
If CDate(Sheets("J'apprend").Range("I" & n)) = Date And (Sheets("J'apprend").Range("H" & n).Value = "") Then
taches = taches & Chr(10) & Sheets("J'apprend").Range("C" & n)
End If
Next n
MsgBox taches
For n = 6 To 600
If CDate(Sheets("J'apprend").Range("M" & n)) = Date And (Sheets("J'apprend").Range("L" & n).Value = "") Then
taches2 = taches2 & Chr(10) & Sheets("J'apprend").Range("C" & n)
End If
Next n
MsgBox taches2
For n = 6 To 600
If CDate(Sheets("J'apprend").Range("Q" & n)) = Date And (Sheets("J'apprend").Range("P" & n).Value = "") Then
taches3 = taches3 & Chr(10) & Sheets("J'apprend").Range("C" & n)
End If
Next n
MsgBox taches3
For n = 6 To 600
If (CDate(Sheets("J'apprend").Range("M" & n)) = Date - 1 Or CDate(Sheets("J'apprend").Range("M" & n)) = Date - 3 Or CDate(Sheets("J'apprend").Range("M" & n)) = Date - 7) And Not (Sheets("J'apprend").Range("A" & n).Value = "") Then
taches4 = taches4 & Chr(10) & Sheets("J'apprend").Range("C" & n)
End If
Next n
MsgBox taches4
End SubBonjour et bienvenu(e)
Sans fichier je n'arrive pas à comprendre ce que tu veux faire
Mais pour
il suffit de tester la longueur du texte à afficher, ce qui donneMegaphone a écrit :Ce que je souhaiterais faire, c'est ne pas ouvrir de MsgBox si tous les cours ont été vus
If Len(taches) 0 Then MsgBox tachesA toi d'adapter pour les autres taches2, taches3 et taches4
Merci beaucoup pour la réponse, ça fonctionne parfaitement !
Je mets le sujet comme résolu donc.
Bonne fin de journée !
Bonjour
Ok, que cela te convienne
dans le code j'ai oublié le >
If Len(taches) > 0 Then MsgBox tachesEn fait j'ai du un petit peu changer, dans la mesure où la longueur n'était jamais égale à zéro (car taches en soi contenait déjà les 28 caractères de "Seconde vue pour aujourd'hui"), du coup j'ai utilisé <>.
Mais en tout cas encore merci !