Son et message sous excel VBA [Résolu]

mod77 1246 Messages postés vendredi 10 juillet 2009Date d'inscription 17 avril 2018 Dernière intervention - 2 nov. 2012 à 23:40 - Dernière réponse : Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention
- 4 nov. 2012 à 10:58
Bonsoir,

J'ai un doute avec mon application qui comporte des boutons de commande et qui charge des photos sur chacun d'eux.
Aussi, j'ai décidé de mettre une instruction pour être certain que le chargement des photos est terminé et un message furtif lorsque je clique sur un bouton.
Mais je ne sais pas comment faire.

1-Comment afficher un message du type "point attribué" et qui s'efface tout seul après un peu moins d'1 seconde ou une seconde au plus?

2-Comment émettre un Bip ?

Merci de votre aide.
Afficher la suite 

Votre réponse

10 réponses

Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 3 nov. 2012 à 00:47
+3
Utile
Commence par te créer ton petit message avec une zone de texte (via les graphiques d'Excel) que tu renomme en MsgInfo

Puis voilà un petit code pour te donner une idée

D'abord ajouter ca au début de ton module (retire éventuellement les PtrSafe si il n'est pas content) :
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function Beep Lib "kernel32.dll" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long


A placer après ton traitement :
Dim shape As shape
Set shape = ActiveSheet.Shapes("MsgInfo")
shape.Visible = msoTrue

Call Sleep(1000) 'Attente 1 seconde
Call Beep(800, 500) ' Beep pendant 500ms
shape.Visible = msoFalse


Par contre l'attente est bloquante, aucune actions ne pourra être faite pendant ce temps

_____________
Kenji
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 3 nov. 2012 à 00:57
+3
Utile
Deuxième possibilité sans les API et l'attente non bloquante

Dim shape As shape
Set shape = ActiveSheet.Shapes("MsgInfo")
shape.Visible = msoTrue
Application.OnTime Now + TimeValue("00:00:01"), "WaitEnd"


Et la fonction de fin

Public Sub WaitEnd()
  Dim shape As shape
  Set shape = ActiveSheet.Shapes("MsgInfo")
  VBA.Beep
  shape.Visible = msoFalse
End Sub


_____________
Kenji
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 3 nov. 2012 à 11:45
+3
Utile
Si tu veux conserver la TextBox, il faut passer par un OLEObject

Public Sub WaitEnd()
  Dim ctrl As OLEObject
  Set ctrl = ActiveSheet.OLEObjects("MsgInfo1")
  VBA.Beep
  ctrl.Visible = False
End Sub


Dim ctrl As OLEObject
Set ctrl = ActiveSheet.OLEObjects("MsgInfo1")
ctrl.Visible = True
Application.OnTime Now + TimeValue("00:00:01"), "WaitEnd"



_____________
Kenji
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 3 nov. 2012 à 00:07
0
Utile
Bonsoir,

Plusieurs choix :

Soit tu affiche le message dans un forme (rectangle, cercle ...) que tu fais apparaitre ou disparaitre
Sois tu affiche une message style msgbox mais de ta propre conception (UserFrom)
Soit juste un texte écris dans une cellule, et qui s'efface après

Soit faire un Bip avec le son de Windows
Soit faire un Bip avec le buzzer du PC


_____________
Kenji
Commenter la réponse de Charles Racaud
mod77 1246 Messages postés vendredi 10 juillet 2009Date d'inscription 17 avril 2018 Dernière intervention - 3 nov. 2012 à 00:34
0
Utile
J'aimerais que le message "Point attribué!"s'affiche dans un rectangle simple mais qu'il disparaisse sans mon intervention.

Pour le bip le buzzer pc conviendra car je compte opter pour Open office prochainement et y transférer mon application.

Merci
Commenter la réponse de mod77
mod77 1246 Messages postés vendredi 10 juillet 2009Date d'inscription 17 avril 2018 Dernière intervention - 3 nov. 2012 à 11:25
0
Utile
Bonjour Charles Racaud,
J'ai essayé la 2e méthode.
J'ai retiré effectivement les ptrSafe, mais
j'ai un message d'erreur qui apparait de temps en temps" Erreur d'exécution n°5: argument ou appel de procédure incorrecte" au niveau de "shape =...".

Mais je ne comprends pas une chose:
J'ai créé ma zone texte MsgInfo1. Via propriété j'ai mis le texte "note attribuée".
Mais il est toujours visible.

Et où dois-je mettre le 1er code "Dim shape.."
Commenter la réponse de mod77
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 3 nov. 2012 à 11:30
0
Utile
Attention, ce n'est pas un control (ActiveX ou formulaire) qu'il faut insérer mais un dessin Excel
Le premier code se met à la fin de ton traitement.

_____________
Kenji
Commenter la réponse de Charles Racaud
mod77 1246 Messages postés vendredi 10 juillet 2009Date d'inscription 17 avril 2018 Dernière intervention - 3 nov. 2012 à 11:35
0
Utile
Voici le fichier ça sera plus simple:
http://cjoint.com/?3KdlIRQdrwt
Commenter la réponse de mod77
mod77 1246 Messages postés vendredi 10 juillet 2009Date d'inscription 17 avril 2018 Dernière intervention - 3 nov. 2012 à 22:00
0
Utile
J'ai essayé mais j'ai trop de mal alors je me contente de fenêtre de message.

Mais je vous remercie beaucoup de votre aide.
Commenter la réponse de mod77
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 4 nov. 2012 à 10:58
0
Utile
Quel a été le problèmes ? J'ai fais tes testes sur ton document, ca marchais très bien.
Attention, il faut placer la fonction WaitEnd dans un module et remplacer ActiveSheet par ta feuille Application donc "Feuil3"

_____________
Kenji
Commenter la réponse de Charles Racaud

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.