Macro qui déclenche une autre macro au bout de 3 secondes

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Voici mon problème :

Je déclenche une macro qui place dans une cellule un commentaire (ici un message d'avertissement).
La macro force le commentaire à apparaître sur l'écran sans même qu'il faille placer le pointeur de la souris sur la cellule concernée (la macro fait appel à une autre macro qui réalise cette tache et fige le commentaire).
Pour l'instant tout est OK.
Ce que je voudrais, c'est qu'au bout de, par exemple, 3 secondes, le commentaire s'éclipse. Le faire s'éclipser : pas de problème, mais la routine qui fasse qu'il s'éclipse au bout de 3 secondes, je ne la connais malheureusement pas.

En somme :
1/ Événement
2/ Commentaire visible
3/ 3 secondes (c'est ici le problème !)
4/ Commentaire invisible (à ce moment-là on ne peut le voir à nouveau qu'en survolant la cellule avec le pointeur de la souris)

Merci d'avance pour votre aide.
 
Re : Macro qui déclenche une autre macro au bout de 3 secondes

Bonjour Skoobi,

J'ai essayé ton conseil, et dans ma macro j'ai écri :

'apparition du commentaire
[NbCopies].Comment.Visible = True

'ton conseil
Application.Wait (Now + TimeValue("0:00:3"))

'éclipsage du commentaire
[NbCopies].Comment.Visible = False

Résultat : le commentaire apparaît une fraction de seconde....

Comment améliorer ceci ?
 
Re : Macro qui déclenche une autre macro au bout de 3 secondes

Bonjour,

Ceci fonctionne avec xl2003:

Code:
[E10].Comment.Visible = True
With Application
    .ScreenUpdating = True
    .Wait (Now + TimeValue("0:00:03"))
End With
[E10].Comment.Visible = False
Cordialement,

Tirex28/
 
Re : Macro qui déclenche une autre macro au bout de 3 secondes

bonjour,

juste pour le plaisir des macros,
une fonction qui affiche un userform temporaire

Code:
Option Explicit
Private Const AjustHauteur As Integer = 21
Private Const AjustLargeur As Integer = 6
Sub essaiMsgTemp()
Dim Message As String
Dim Titre As String
Message = "Mon message trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés," & _
   " trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés,trés, trés, trés, trés," & _
   " trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés,trés, trés, trés, trés," & _
   " trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés, trés,trés, trés, trés, trés," & _
   "...long"
Titre = "Magic_Doctor"
MsgTemp Message, 3, Titre
'ou
Message = [Feuil1!A21]
MsgTemp Message, 3
End Sub
Function MsgTemp(Message As String, NbSec As Long, Optional Titre As String = "Message")
Dim ufTemp As Object
Dim newLabel As Object
Dim Code As String
Dim Depart As Date
   
   'Création du UserForm
   Set ufTemp = ThisWorkbook.VBProject.VBComponents.Add(3)           'vbext_ct_MSForm
   ufTemp.Properties("Caption") = Titre
   'Ajout d'un label
   Set newLabel = ufTemp.Designer.Controls.Add("forms.Label.1")
   With newLabel
      .Name = "LabelTemp"
      .Left = 0: .Top = 0: .Width = 200
      .Font.Name = "Tahoma": .Font.Bold = True:  .Font.Italic = True
      .ForeColor = &H80000012: .BackColor = &HC0FFFF: .BorderColor = &H80000006
      .Caption = Message: .AutoSize = True
      If .Width < 200 Then .Width = 200: .AutoSize = False
   End With
      
   'Ajout de code dans le nouveau UserForm
   Code = "Private Sub UserForm_Initialize()" & vbLf & _
      "Me.Height = LabelTemp.Height + " & AjustHauteur & ": Me.Width = LabelTemp.Width + " & AjustLargeur & vbLf & _
      "End Sub"
 
   With ufTemp.CodeModule
      .InsertLines .CountOfLines + 1, Code
   End With
   
   'Affichage du USF
   VBA.UserForms.Add(ufTemp.Name).Show 0
    
   Depart = Now()
   Do Until (DateDiff("s", Depart, Now()) > NbSec)
       DoEvents
   Loop
   'Suppression du USF
   ThisWorkbook.VBProject.VBComponents.Remove ufTemp
   Application.VBE.CommandBars.FindControl(ID:=106).Execute

End Function
@+
 
Re : Macro qui déclenche une autre macro au bout de 3 secondes

Merci Fred-PapaNoël pour ta macro,

Évidemment, je me suis empressé de l'essayer !
Je l'ai placée dans un module.
J'ai déclenché "essaiMsgTemp".
Un message d'erreur (1004) est apparu en surlignant en jaune dans la fonction "MsgTemp" :
Set ufTemp = ThisWorkbook.VBProject.VBComponents.Add(3)

Je reste malheureusement sur ma soif...
 
Re : Macro qui déclenche une autre macro au bout de 3 secondes

bonjour,

quelles sont tes références activées pour le projet, chez moi j'ai ça


essaie d'ajouter Microsoft Visual Basic for Applications Extensibility mais sans grande conviction

@+
 
Dernière édition:
Re : Macro qui déclenche une autre macro au bout de 3 secondes

bonsoir le fil

il me semble que ça fonctionnait sous Excel 98 (Mac) avec la référence Microsoft Visual Basic for Applications Extensibility cochée

Pas certain de mon coup

Tu nous tiens au courant

@+
 
Re : Macro qui déclenche une autre macro au bout de 3 secondes

Re,
Ca bug (1004) toujours sur cette ligne:
Code:
Set ufTemp = ThisWorkbook.VBProject.VBComponents.Add(3)           'vbext_ct_MSForm

Zarbi non?
Je me réjouis de l'essayer à la maison sur ma machine de guerre 😉

A++
TheLIo
 
Re : Macro qui déclenche une autre macro au bout de 3 secondes

Bonsoir Fred,

Malheureusement ça ne fonctionne pas...
Quant aux références dont tu me parles, je ne sais même pas où y accéder avec ma version d'Excel 2007, qui plus est en espagnol !
Quoi qu'il en soit, je conserve ce que tu as adressé au cas où j'arrive à le faire fonctionner.

@+
 
- 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

Discussions similaires

Retour