XL 2013 Arrêt macro ne fonctionne pas

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 !

Solution
Je pense que j'écrirais ainsi le code du classeur joint au #1 :
VB:
Option Explicit
Private HOT As Date
Sub Depart()
   Clign1
   End Sub
Sub Arret()
   If HOT = 0 Then Exit Sub
   Application.OnTime HOT, "Clign1", Schedule:=False
   HOT = 0
   End Sub
Sub Clign1()
   With ActiveSheet.Shapes("Rectangle à coins arrondis 2").Fill.ForeColor
      .RGB = IIf(.RGB = 255, 192255, 255)
      End With
   HOT = Now + TimeSerial(0, 0, 1)
   Application.OnTime HOT, "Clign1"
   End Sub
Mais pour qu'il ne se rouvre pas prévoyez dans ThisWorkbook :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Arret
   End Sub
Le module de classe Planification ne serait intéressant que si vous souhaitiez placer la programmation dans le module de la...
Hello,

parce que "intervalle" est vide, il faut déclarer la variable en début de module pour qu'elle soir commune aux sub du module

Une bonne pratique consiste à mettre "Option Explicit" en début de module, ça permet de voir tout de suite si on a fait une erreur dans un nom de variable ou oublié une déclaration
VB:
Dim Intervalle

Sub Clign1()
Intervalle = Now + TimeValue("00:00:01")

Application.OnTime Intervalle, "Clign1"

With ActiveSheet.Shapes("Rectangle à coins arrondis 2")
Set Var = ActiveSheet.Shapes("Rectangle à coins arrondis 2")

If .Fill.ForeColor.RGB = 192255 Then
.Fill.ForeColor.RGB = 255 '3057486

Else

.Fill.ForeColor.RGB = 192255

End If
End With
End Sub
Sub Depart()
Intervalle = Now + TimeValue("00:00:01") 'TimeValue("00:00:01")
Application.OnTime Intervalle, "Clign1"
End Sub
Sub Arret()
Application.OnTime Intervalle, "Clign1", , False
End Sub
 
Bonjour

Ne faut t'il pas que Clign1 soit appelé d'abord quelque part, la shape à une macro associée : Rectangleàcoinsarrondis2_Cliquer que je vois nulle part !!!
OK :les Sub Depart et Arret sont appelées via les boutons Reprise et Stop clignoittement
 
bonjour
si tu utilise le shredule dans appilcation ontime utilise le pour le start and stop sinon ne l'utilise pas
utilise une variable booleenne global module pour le stopper

Patrick
Bonjour

Merci cela fonctionne Mais je les mis a l'ouverture du fichier cela fonctionne
Mais a la fermeture du fichier si il est tous seul a être ouvert il ce ferme bien.

Par contre ci un autre fichier excel ouvert il beug, pourquoi?

With ActiveSheet.Shapes("Rectangle à coins arrondis 1") '( IL me surligne cette ligne )

Sub Clign1()
Dim delay#, Intervalle
If arret Then Exit Sub
DoEvents
delay = 0.000007 '0.000007'un peu plus d'une demie seconde environ en centiemme
Intervalle = Now + delay

Application.OnTime Intervalle, "Clign1"

With ActiveSheet.Shapes("Rectangle à coins arrondis 1") '( IL me surligne cette ligne )
If .Fill.ForeColor.RGB = couleurdepart Then
.Fill.ForeColor.RGB = couleur2
Else
.Fill.ForeColor.RGB = couleurdepart
End If
End With
End Sub
Sub Workbook_BeforeClose(Cancel As Boolean)
Stopper
ThisWorkbook.Save
End Sub
Merci
 
Bonjour

Merci cela fonctionne Mais je les mis a l'ouverture du fichier cela fonctionne
Mais a la fermeture du fichier si il est tous seul a être ouvert il ce ferme bien.

Par contre ci un autre fichier excel ouvert il beug, pourquoi?

With ActiveSheet.Shapes("Rectangle à coins arrondis 1") '( IL me surligne cette ligne )



Merci
Voici ce qu'il me met et quant je click su fin il veux rien savoir il tourne et me laisse cette fenêtre. Et le click sur débogage il ouvre le fichier et me bascule sur le developpeur.
1769618500228.png
 
re
fait un addressage complet de l'object ainsi que la procedure pour le shreduler
VB:
Option Explicit

Dim arret As Boolean

Const couleurdepart As Long = 255
Const couleur2 As Long = 192255

Sub Clign1()
    Dim delay#, Intervalle
    If arret Then Exit Sub
   DoEvents
   delay = 0.000007 'un peu plus d'une demie seconde environ en centiemme
    Intervalle = Now + delay
    
    Application.OnTime Intervalle, ThisWorkbook.FullName & "!Module1.Clign1"
    
    With ThisWorkbook.Sheets("Feuil1").Shapes("Rectangle à coins arrondis 2")
        If .Fill.ForeColor.RGB = couleurdepart Then
            .Fill.ForeColor.RGB = couleur2
        Else
            .Fill.ForeColor.RGB = couleurdepart
        End If
    End With
End Sub

Sub Depart()
    arret = False
    Clign1
End Sub

Sub stopper()
    arret = True
    'retour a la couleur initiale
    ActiveSheet.Shapes("Rectangle à coins arrondis 2").Fill.ForeColor.RGB = couleurdepart
End Sub
ainsi comme tu peux le voir je peux être sur un autre fichier en même temps
demo4.gif
 
re
fait un addressage complet de l'object ainsi que la procedure pour le shreduler
VB:
Option Explicit

Dim arret As Boolean

Const couleurdepart As Long = 255
Const couleur2 As Long = 192255

Sub Clign1()
    Dim delay#, Intervalle
    If arret Then Exit Sub
   DoEvents
   delay = 0.000007 'un peu plus d'une demie seconde environ en centiemme
    Intervalle = Now + delay
  
    Application.OnTime Intervalle, ThisWorkbook.FullName & "!Module1.Clign1"
  
    With ThisWorkbook.Sheets("Feuil1").Shapes("Rectangle à coins arrondis 2")
        If .Fill.ForeColor.RGB = couleurdepart Then
            .Fill.ForeColor.RGB = couleur2
        Else
            .Fill.ForeColor.RGB = couleurdepart
        End If
    End With
End Sub

Sub Depart()
    arret = False
    Clign1
End Sub

Sub stopper()
    arret = True
    'retour a la couleur initiale
    ActiveSheet.Shapes("Rectangle à coins arrondis 2").Fill.ForeColor.RGB = couleurdepart
End Sub
ainsi comme tu peux le voir je peux être sur un autre fichier en même temps
Regarde la pièce jointe 1227235

Les modif permet de travaillé sur plusieurs fichier OK.
Mais si j'ai plusieurs fichier ouvert et que je le ferme ; la il se réouvre automatiquement. Et le clignotement est plus rapide.

C'est comme si il ne prenais pas la fonction "Stopper" a la fermeture.
Comprend pas.

Je met le fichier sur le quel il est placé
Merci

Bonne journée
 

Pièces jointes

Bonjour.
Notez dans une variable globale du module l'heure à spécifier au Application.OnTime pour pouvoir la re-spécifier ultérieurement à un autre avec Schedule:=False.
J'ai des modules de services pour pouvoir planifier un évènement Echoit dans un module objet si ça vous intéresse. Simple à utiliser.
 
- 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

Réponses
4
Affichages
487
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
345
Réponses
9
Affichages
253
Retour