Afficher un simple message

  • Initiateur de la discussion Initiateur de la discussion herve62
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

H

herve62

Guest
Bonjour au Forum

J'aimerais afficher simplement un message ( sans bouton OK ..etc)après que l'utilisateur ai repondu OUI a l'enregistrement du fichier
lui demandant de patienter ( car cela prend 1 dizaine de secs), puis que ce message disparaisse à la fin
Est ce possible ? ( je n'ai pas trouvé avec Msgbox)
Merci à vous
Hervé 62
 
Bonjour Hervé 62

Tapes ton message dans un Textbox d'un userform; puis dans le code du UserForm tape ceci:

Application.Wait Now + TimeValue('00:00:05')
Unload Me

Le ('00:00:05') régule le temps d'apparition du message (ici 5 seconde)

Je ne sais pas si le 'Unload Me' est obligatoire. Tu peux essayer sans.

Ensuite, utilise la procédure suivante:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
UserForm1.Show
ActiveWorkbook.Save
End Sub

Jéespère que cela correspond bien à ta question,
@ +
Toutou
 
Hello le Forum, Hervé,

Plusieurs solutions s’offrent à toi :

1 – Créer une petite userform avec un label dedans. Si tu ne veux pas avoir la barre de userform en haut (avec la croix, etc…) ça se désactive cherche sur le forum, tu trouveras le code.

2 – Passer par une msgbox en shell que tu peux temporiser, ne pas oublier de cocher dans les référence Microsoft visual basic for application (1 pour 1s)

Sub test()
Dim WSHShell

Set WSHShell = CreateObject('WScript.Shell')
DoEvents
WSHShell.Popup 'dede', 1, 'dede'
Set WSHShell = Nothing

End Sub


3 – Créer une zone de texte sur ta feuille et l’effacer à la fin.
Declare Sub Sleep Lib 'kernel32' (ByVal dwMilliseconds As Long)
Declare
Sub Sleep Lib 'kernel32' (ByVal dwMilliseconds As Long)

Sub taMacro()
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 10, 10, 0,
0).Select
With Selection
.Characters.Text = 'Patientez !'
.AutoSize =
True
.ShapeRange.Fill.ForeColor.SchemeColor = 13
.Name = 'leTxt'
End
With
'ici le corps de ta macro remplacé par une temporisation
Start = Timer
Sleep (1000)
Finish = Timer
ActiveSheet.Shapes('leTxt').Delete
End Sub


Moi j’utilise la première solution. Parce que une fois ta Userform faites tu peux la réutiliser dans d’autre application facilement et il suffit juste de faire un Userform.show 1 au début du code et un unload userform à la fin. Rapide et efficace.

En plus avec la méthode de la userform tu peux jouer avec les couleurs de fonds, de texte et les formes. Pas mal

Bon courage

Creepy
 
Bonsoir Toutou ; Creepy

Merci de votre contribution
J'ai plutot opté pour le USF que le Shell , car je maitrise mieux VBA

Bon j'ai fait en vitesse une bidouille à partir de vos conseils ( je n'ai pas utilisé la Sub Worbook _close) qui reflète une infime partie de mon application ( exemple joint ) : dans celui ci je pense que c'est OK car la sauv. est rapide
Mais dans mon appli , le message disparait et le rectangle USF passe en blanc ( efface) mais dure assez longtemps , tt le tps de l'enregistrement (10 a 12secs)
Le MUST serait que le message reste jusqu'a la fin de l'enregistrement, puis disparaisse ensuite
Bonne soirée
A+
Hervé (62) [file name=Tempo.zip size=12161]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Tempo.zip[/file]
 

Pièces jointes

bonsoir Hervé, Bonsoir Creepy, le forum
just une suggestion,
je ne sais pas le faire, mais pourquoi n'essaierais tu pas avec une bar de progression?
Je suppose qu'il est possible de la programmer pour durer aussi longtemps que l'enregistrement...
Bonne Soirée,
@ +
Toutou
 
bonsoir tous le monde moi je ferais simplement dans usf1 code Private Sub CommandButton1_Click()
sauv = MsgBox(' enregistrement des données ?', 4, 'sauvegarde data')
If sauv = vbYes Then
UserForm2.Show
End If
'UserForm2.Show
'ActiveWorkbook.Save
Sheets('Feuil2').Activate
End Sub dans usf2 Private Sub UserForm_Activate()
DoEvents
ActiveWorkbook.Save
Unload Me
End Sub' salutations
 
Bonjour le forum et mes 'Helper'

Merci à tous , enfin aussi à Excalibur car maintenant c'est NICKEL CHROME !!!
Il fallait penser à la fonction 'DoEvents' ( j'ai lu l'aide VBA)
Je pense que cette astuce servira à beaucoup , au lieu de compliquer avec une progress bar
Bonne journée
Hervé
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour