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 Sub

Bonjour et bienvenu(e)

Sans fichier je n'arrive pas à comprendre ce que tu veux faire

Mais pour

Megaphone a écrit :

Ce que je souhaiterais faire, c'est ne pas ouvrir de MsgBox si tous les cours ont été vus

il suffit de tester la longueur du texte à afficher, ce qui donne
If Len(taches) 0 Then MsgBox taches

A 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 taches

En 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 !

Rechercher des sujets similaires à "condition ouverture msgbox"