MSGBOX et VBA
Résolu/Fermé
boudeviseur
Messages postés
29
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
23 mai 2008
-
26 mars 2007 à 16:50
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 - 29 mai 2009 à 21:12
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 - 29 mai 2009 à 21:12
A voir également:
- MSGBOX et VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
20 réponses
Désolé de répondre à un post qui date d'il y a un an, mais il me semble que le problème vient d'une incompréhension de la fonction Msgbox.
Normalement, cette fonction retourne l'identifiant du bouton cliqué par l'utilisateur (ex: vbOk). Donc il est normal qu'il est normal que le compilateur attende une affectation du style :
reponse = Msgbox(...)
ou encore :
if (Msgbox(...) = vbok) then
...
else
...
end if
Si tu veux utiliser Msgbox comme une procédure, rajoute le mot clé "Call" devant, et la valeur de retour de la fonction Msgbox sera tout simplement ignorée :
Call Msgbox(...)
Normalement, cette fonction retourne l'identifiant du bouton cliqué par l'utilisateur (ex: vbOk). Donc il est normal qu'il est normal que le compilateur attende une affectation du style :
reponse = Msgbox(...)
ou encore :
if (Msgbox(...) = vbok) then
...
else
...
end if
Si tu veux utiliser Msgbox comme une procédure, rajoute le mot clé "Call" devant, et la valeur de retour de la fonction Msgbox sera tout simplement ignorée :
Call Msgbox(...)
salut,
remplace ton code de msgbox par celui-ci, qui met toutes les données du msgbox dans des variables :
Dim Message, Style, Titre
Message = "Cette partie de la page" & vbCrLf & "La case à cocher etc.."
Style = vbOKOnly
Titre = "Aide"
MsgBox Message, Style, Titre
a+
remplace ton code de msgbox par celui-ci, qui met toutes les données du msgbox dans des variables :
Dim Message, Style, Titre
Message = "Cette partie de la page" & vbCrLf & "La case à cocher etc.."
Style = vbOKOnly
Titre = "Aide"
MsgBox Message, Style, Titre
a+
Désolé de répondre presque un an après la dernière réponse moi aussi !!!
Tout d'abord sans vouloir contrarier masterseb je pense que la réponse de c-cube est la meilleure car tu peux en effet gérer ensuite la réponse (d'ou le nom de variable associé à la box ).
Voila pour ma part.
J'aurais cependant une question moi aussi (interet du post ^^)
Y a t-il un moyen "d'actualiser" la message box ?
Je m'explique : par exemple lorsqu'on affiche l'heure, que les secondes défilent, ou dans mon cas, afficher l'écoulement d'un compte à rebours ?
Si besoin du code, demadez moi !
Merci d'avance pour vos réponses si quelqu'un passe par ici !
PS : message au modo : désolé si j'ai pas le droit de reposer une question, effacez et je reposterai en créant un new topic.
Tout d'abord sans vouloir contrarier masterseb je pense que la réponse de c-cube est la meilleure car tu peux en effet gérer ensuite la réponse (d'ou le nom de variable associé à la box ).
Voila pour ma part.
J'aurais cependant une question moi aussi (interet du post ^^)
Y a t-il un moyen "d'actualiser" la message box ?
Je m'explique : par exemple lorsqu'on affiche l'heure, que les secondes défilent, ou dans mon cas, afficher l'écoulement d'un compte à rebours ?
Si besoin du code, demadez moi !
Merci d'avance pour vos réponses si quelqu'un passe par ici !
PS : message au modo : désolé si j'ai pas le droit de reposer une question, effacez et je reposterai en créant un new topic.
NicoDisso
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
29 mai 2009 à 19:28
29 mai 2009 à 19:28
je t'ai dit
"Sur une feuille, mettre 1 timer, 2 label ( lbl_date & lbl_message) "
rajoutes un composant "Timer Object"
tu le place sur ta feuille ( il est invisble une fois lancé )
dans la propriété "interval" tu mets 1000 ( millisecondes )
et tu regardes ce que ca fait...
par contre je n'avais pas testé, le time ne lui plait pas donc tu mets now
Private Sub IeTimer1_Timer()
Lbl_Date.Caption = StrConv(Format(Now, "DDDD DD MMMM YYYY - HH:MM:SS"), vbProperCase)
Dim Minute As Integer
Minute = CInt(Mid(Format(Now, "hh:MM:ss"), 4, 2))
Lbl_Message.Caption = "actuellement nous sommes à la minute " & Minute & ""
End Sub
"Sur une feuille, mettre 1 timer, 2 label ( lbl_date & lbl_message) "
rajoutes un composant "Timer Object"
tu le place sur ta feuille ( il est invisble une fois lancé )
dans la propriété "interval" tu mets 1000 ( millisecondes )
et tu regardes ce que ca fait...
par contre je n'avais pas testé, le time ne lui plait pas donc tu mets now
Private Sub IeTimer1_Timer()
Lbl_Date.Caption = StrConv(Format(Now, "DDDD DD MMMM YYYY - HH:MM:SS"), vbProperCase)
Dim Minute As Integer
Minute = CInt(Mid(Format(Now, "hh:MM:ss"), 4, 2))
Lbl_Message.Caption = "actuellement nous sommes à la minute " & Minute & ""
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
209
26 mars 2007 à 16:53
26 mars 2007 à 16:53
salut
montre nous ce que tu as marqué
montre nous ce que tu as marqué
boudeviseur
Messages postés
29
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
23 mai 2008
21
27 mars 2007 à 08:02
27 mars 2007 à 08:02
Salut, merci déja de s'y interesser
VOici le code:
MsgBox ("Cette partie de la page" & vbCrLf & "La case à cocher etc..",vbInformation = vbOKOnly,"Aide")
Sauf que quand je met que je veut un style "Aide", et le titre "Aide", il y a un message d'erreur qui me dit qu'il attend un "=" quelque part..
Merci
VOici le code:
MsgBox ("Cette partie de la page" & vbCrLf & "La case à cocher etc..",vbInformation = vbOKOnly,"Aide")
Sauf que quand je met que je veut un style "Aide", et le titre "Aide", il y a un message d'erreur qui me dit qu'il attend un "=" quelque part..
Merci
boudeviseur
Messages postés
29
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
23 mai 2008
21
10 avril 2008 à 14:10
10 avril 2008 à 14:10
MErci pour tes explication
NicoDisso
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
28 mai 2009 à 18:50
28 mai 2009 à 18:50
si tu veux actualiser l'heure et la date, le mieux c'est de te faire un msgbox perso comme une feuille ou tu mets ce que tu veux dedans.
Pour pousser le vis, tu peux meme jusqu'à faire jouer le son associé dans windows
Pour pousser le vis, tu peux meme jusqu'à faire jouer le son associé dans windows
kryoportail
Messages postés
222
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
22 mai 2014
125
28 mai 2009 à 18:53
28 mai 2009 à 18:53
Salut !
Lol, NicoDisso le pro de la macro !.....
Amicalement,
S@M...
Lol, NicoDisso le pro de la macro !.....
Amicalement,
S@M...
NicoDisso
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
29 mai 2009 à 07:22
29 mai 2009 à 07:22
Tu mets un controle timer dans ta feuille et tu mets un label
Ensuite dans la propriete interval de ton timer tu mets 1000 ce qui
Correspond a 1 sec
Et enfin dans sa procedure timer ( de memoire ) tu lui mets un code du style
Label1.caption = format(date,"dd/mm/yyyy") & " " & format(time,"hh:mm:ss")
Label1.refresh
Et la ton label affichera la date & l heure
Ensuite dans la propriete interval de ton timer tu mets 1000 ce qui
Correspond a 1 sec
Et enfin dans sa procedure timer ( de memoire ) tu lui mets un code du style
Label1.caption = format(date,"dd/mm/yyyy") & " " & format(time,"hh:mm:ss")
Label1.refresh
Et la ton label affichera la date & l heure
euh ... j'ai oublié de préciser que je ne connais pas (plus ?) grand chose en vba ...
j'en fais depuis un moment mais je n'ai eu à utiliser que des macros basiques qui généralement, n'ont même pas besoin de crééer des objets (c'est pour dire) et de ce fait, pas mal de bases sont passées aux oubliettes ... je te passe mon code :
Sub tps()
m = MsgBox("Go !", vbOKOnly,"titre")
' durée donnée par la sub precedente '
Start = Timer ' top
Finish = Start + duree
Do While Timer < Finish
il_reste = Int(Finish - Timer)
m0 = CreateObject("Wscript.shell").Popup("TEete" & var_a & " texte " & var_b & " texte " & var_c & " texte" & Chr(10) & _
"Il reste " & il_reste & " secondes avant la fin." & Chr(10) & _
"La fenetre se fermera automatiquement à la fin du temps imparti." & Chr(10) & _
"Appuyez sur OK pour mettre à jour ou sur Cancel pour quitter.", duree, "Titre", vbOKCancel)
If m0 = vbCancel Then
Finish = 10000
'grosse valeur donc fini'
End If
m00 = MsgBox("C'est fini !", vbOKOnly, "Sexy_Game")
DoEvents ' Donne le contrôle à d'autres processus.
Loop
sub_suivante
End Sub
j'aimerais que la variable il_reste se mette à jour dans ma msgbox pour eviter ce vieux message "ok pour mettre a jour " !!
j'en fais depuis un moment mais je n'ai eu à utiliser que des macros basiques qui généralement, n'ont même pas besoin de crééer des objets (c'est pour dire) et de ce fait, pas mal de bases sont passées aux oubliettes ... je te passe mon code :
Sub tps()
m = MsgBox("Go !", vbOKOnly,"titre")
' durée donnée par la sub precedente '
Start = Timer ' top
Finish = Start + duree
Do While Timer < Finish
il_reste = Int(Finish - Timer)
m0 = CreateObject("Wscript.shell").Popup("TEete" & var_a & " texte " & var_b & " texte " & var_c & " texte" & Chr(10) & _
"Il reste " & il_reste & " secondes avant la fin." & Chr(10) & _
"La fenetre se fermera automatiquement à la fin du temps imparti." & Chr(10) & _
"Appuyez sur OK pour mettre à jour ou sur Cancel pour quitter.", duree, "Titre", vbOKCancel)
If m0 = vbCancel Then
Finish = 10000
'grosse valeur donc fini'
End If
m00 = MsgBox("C'est fini !", vbOKOnly, "Sexy_Game")
DoEvents ' Donne le contrôle à d'autres processus.
Loop
sub_suivante
End Sub
j'aimerais que la variable il_reste se mette à jour dans ma msgbox pour eviter ce vieux message "ok pour mettre a jour " !!
Enfait je crois que je vais faire un userform (sauf si plus simple) ... reste à savoir comment insérer une variable dans le texte de la userform
NicoDisso
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
29 mai 2009 à 18:22
29 mai 2009 à 18:22
sur une feuille, mettre 1 timer, 2 label ( lbl_date & lbl_message)
dans l'évement
Private Sub Timer1_Timer()
Lbl_Date.Caption = StrConv(Format(Now, "DDDD DD MMMM YYYY - HH:MM:SS"), vbProperCase)
Dim Minute As Integer
Minute = CInt(Mid(Format(Time, "hh:mm:ss"), 4, 2))
Lbl_Message.Caption = "actuellement nous sommes à la minute " & Minute & ""
End Sub
dans l'évement
Private Sub Timer1_Timer()
Lbl_Date.Caption = StrConv(Format(Now, "DDDD DD MMMM YYYY - HH:MM:SS"), vbProperCase)
Dim Minute As Integer
Minute = CInt(Mid(Format(Time, "hh:mm:ss"), 4, 2))
Lbl_Message.Caption = "actuellement nous sommes à la minute " & Minute & ""
End Sub
NicoDisso
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
29 mai 2009 à 18:26
29 mai 2009 à 18:26
c'est le role du timer...
ca fonction est de déclencher l'évènement à un intervale spécifié en millisecondes...
ca fonction est de déclencher l'évènement à un intervale spécifié en millisecondes...
NicoDisso
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
29 mai 2009 à 21:12
29 mai 2009 à 21:12
De rien...
Merci pour le merci
Merci pour le merci