Afficher une message Msgbox choisi dans une liste

eric57

XLDnaute Occasionnel
Bonjour le forum

J'affiche a la in d'une procédure un msgbox indiquant : "Préparation de la liste terminé."

Je souhaiterais pouvoir afficher ce msgbox avec un message choisi dans une liste de façon aléatoire ( ou l'un derriere l'autre)

Ceci afin de mettre un peu détente dans mon tableau ( et rendra aussi l’utilisateur + attentif car lira plus facilement le msgbox sans cliquer de façon automatique sur "ok"

Par ex :

"Préparation de la liste terminé."
"Ok c'est prêt"
" Et voila la liste est prête"

Cette liste pouvant être dans une feuille du document excel

Merci pour vos réponses ou proposition
 

thebenoit59

XLDnaute Accro
Re : Afficher une message Msgbox choisi dans une liste

Bonjour Eric57.
Ce que j'imagine, c'est la création d'un Dictionary avec comme clés des chiffres.
Ensuite un chiffre aléatoire est déterminé comme clé et la MsgBox affichera l'item correspondant.

Code:
Sub Test()

    Set d = CreateObject("Scripting.Dictionary")
    d.Item(1) = "Un"
    d.Item(2) = "Deux"
    d.Item(3) = "Trois"
    
    Message_Aléatoire = d.Item(Int(3 * Rnd) + 1) 'Changer le 3 par le nombre de clés
    MsgBox Message_Aléatoire
    
End Sub
 

roro69

XLDnaute Impliqué
Re : Afficher une message Msgbox choisi dans une liste

Bonjour Eric
essaye ceci:
Tu crée un tableau de string comme ceci:
Dim MesMessages(0 To 2) As String ' ici le nombre de message que tu souhaites
MesMessages(0) = "Préparation de la liste terminé "
MesMessages(1) = "Ok c'est prêt"
MesMessages(2) = "Et voila la liste est prête "
'' Ect .........
Tu appelle la fonction randomize pour un tirage aléatoire
Dim IndexMes As Integer ' pour récupérer l'index du message

Randomize Timer
IndexMes = Int((2 - 0 + 1) * Rnd + 0)' tirage au sort d'un chiffre aléatoire
' et là tu apelle ta msgbox comme ceci:
MsgBox MesMessages(IndexMes)
Voilà
A essayer
A++
 

eric57

XLDnaute Occasionnel
Re : Afficher une message Msgbox choisi dans une liste

Merci pour vos réponses.

thebenoit59, ta méthode marche bien , mais est-il possible de la temporiser pour fermer le createObject

comme par exemple avec CreateObject('Wscript.shell').Popup 'Le Texte', 10, 'Le Titre'

Roro69, j'ai testé mais je ne sais pas ou placer toutes ces infos, et j'ai une erreur quand j'appel ma macro

Mais celle là me plais aussi, est-il possible de la lier a une feuille qui contiendrait les messages ? ( plus facile a changer ou allonger ?
 

Modeste geedee

XLDnaute Barbatruc
Re : Afficher une message Msgbox choisi dans une liste

Bonsour®
les messages seront en colonne 1 à partir de A1 dans l'onglet nommé :"Liste Messages"

la macro s'occupe ensuite de tout !!! :rolleyes:
VB:
Sub MSGAlea()
Dim NoMessage As Integer
Randomize
With Sheets("Liste messages")
NoMessage = 1 + (Int(Rnd() * .Range("a65535").End(xlUp).Row))
MsgBox .Cells(NoMessage, 1), Choose(1 + Rnd() * 2, vbInformation, vbExclamation), NoMessage
End With
End Sub
 

eric57

XLDnaute Occasionnel
Re : Afficher une message Msgbox choisi dans une liste

Bonsoir®
les messages seront en colonne 1 à partir de A1 dans l'onglet nommé :"Liste Messages"

[/CODE]

Merci pour ce code GEEDEE.

J'ai une question concernant les colonnes,

Je souhaite avoir plusieurs colonnes, mais pour chaque type de réponses

Donc comment faire pour qu'il n'aille que dans la colonne A , ou que dans la colonne B par ex.

=> modif : Ok j'ai trouvé j'ai mais Range("D65535") et je selectionne ma colonne dans (Nomessage, 1) colonne 1 ou (nomessage, 2) colonne 2

Est il possible de temporiser ? pour que celui-ci se ferme au bout de 3 secondes
 
Dernière édition:

roro69

XLDnaute Impliqué
Re : Afficher une message Msgbox choisi dans une liste

Bonsoir a essayer :
Sub MsgBoxTmp()
Dim NoMessage As Integer
Randomize
Dim SH As Object
Set SH = CreateObject("WScript.Shell")
With Sheets("Feuil1")
NoMessage = 1 + (Int(Rnd() * .Range("a65535").End(xlUp).Row))
SH.Popup .Cells(NoMessage, 1), Choose(1 + Rnd() * 2, 1, 2), NoMessage
End With


Set SH = Nothing
End Sub
A++
 

eric57

XLDnaute Occasionnel
Re : Afficher une message Msgbox choisi dans une liste

Merci Roro69, je suis parti sur ce code.

Cela fonctionne bien, sauf de temps en temps la temporisation ne fonctionne plus et les messages restent affichés .
 

Discussions similaires

Statistiques des forums

Discussions
314 216
Messages
2 107 389
Membres
109 821
dernier inscrit
tristan28