ZAZ StopMacro - Bouton interrupteur externe

Présentation

Hello, Hello,

J'ai créé une micro-application en .Net : ZAZ StopMacro, pouvant servir avec vos macros V.B.A..

Il s'agit d'une application servant de bouton externe d'arrêt de macro, l'application se place dans votre barre de notification et comporte un bouton, lançant une action spécifique, qui si votre code est paramétré pour la comprendre, réalise l'action d'arrêt.

Principe :

Le fonctionnement est simple, une fois lancé une boucle macro, Excel sera occupé tant que la macro ne sera pas terminée, or si vous avez besoin de reprendre la main sur l'application, soit vous avez prévu une action de sortie, soit vous réussissez à afficher le Debugger, soit vous l'arrêtez par le gestionnaire de tâches et vous perdez tout le travail déjà réalisé.

Ainsi, au lieu de pratiquer comme cela, vous pouvez lancer une action STOP, à l'aide de l'application, votre code V.B.A étant codé pour interpréter cette action, réalisera l'arrêt et Excel sera libéré et vous pourrez y reprendre la main, sans pertes. 8)

Voilà, au lieu de planter l'application comme souvent, maintenant on zaz la macro


Vous trouverez le principe de fonctionnement en détails dans l'image ci-dessous.

screen mcd zaz stopmacro

[size=85]Freeware, avec codes ouverts et archivés dans le ZIP, ainsi qu'un fichier pour tester le principe.

Compatible toute version Excel.

Poids : <1mo[/size]

Lien de téléchargement :

https://www.excel-pratique.com/fr/telechargements/utilitaires/zaz-stopmacro-no213.php

Errata, Masterclass ZAZ STOPMACRO :

Pour l'exemple, le fichier de Test, se contente de sortir de la macro Boucle_Fin (remarquerez que la boucle ne comporte qu'une ligne de code) :

If Not Dir(ZAZ_STOPMACRO, vbDirectory) = "" Then End 'Si fichier STOP.txt existe => FIN MACRO

Mais vous pouvez bien sûr modifier cette ligne de code, tout est paramétrable, la seule chose nécessaire, c'est qu'au fur et à mesure de son avancement, votre macro, vérifie l'existence de l'événement STOP, lancé à l'aide de l'application, pour libérer Excel.


Voici quelques exemples de modifications, pour effectuer des zaz de traitement V.B.A. :

1. Arrêt directement des traitements Macros

2. Sortie de la procédure ou de la fonction en cours

3. Arrêt Traitements macros avec process de sortie

4. Arrêt traitement macro avec clignotement fenêtre dans barre des taches

'1. Arrêt directement des traitements Macros
   If Not Dir(ZAZ_STOPMACRO, vbDirectory) = "" Then End 'Si fichier STOP.txt existe => FIN MACRO
'2. Sortie de la procédure ou de la fonction en cours
   If Not Dir(ZAZ_STOPMACRO, vbDirectory) = "" Then Exit Sub 'Ou exit function
'3. Arrêt Traitements macros avec process de sortie
   If Not Dir(ZAZ_STOPMACRO, vbDirectory) = "" Then
      MsgBox "Arrêt par utilisateur, suite à ZAZ STOPMACRO", vbInformation, "ARRET UTILISATEUR" 'message
      Kill ZAZ_STOPMACRO 'Suppression fichier STOP.txt, pour éviter arrêt macro non voulu, si relance
      End 'FIN MACRO
   End If
'4. Arrêt traitement macro avec clignotement fenêtre dans barre des taches
   'Déclaration variable ZAZ_STOPMACRO comme chaine texte
   Dim ZAZ_STOPMACRO As String
   'Définition variable ZAZ_STOPMACRO du chemin+nom fichier STOP.txt
   ZAZ_STOPMACRO = "C:\Users\waard\Desktop\STOP.txt"
   'Cache l'application Excel durant le traitement macro '<<<<<<<<<<<<<<<<<<<<
   Windows.Application.Visible = False                          '<<<<<<<<<<<<<<<<<<<<
   'Boucle sans fin, Color cellule A1 en Vert > Puis Rouge, Tant que cellule A1 vide
   Do While IsEmpty(ThisWorkbook.Worksheets(2).Range("A1"))
      Range("A1").Interior.ColorIndex = 9
      If Not Dir(ZAZ_STOPMACRO, vbDirectory) = "" Then
         Windows.Application.Visible = True                     '<<<<<<<<<<<<<<<<<<<< Réaffichage application Excel, fait clignoter la fenêtre dans la barre des tâches
         Kill ZAZ_STOPMACRO 'Suppression fichier STOP.txt, pour éviter arrêt macro non voulu, si relance
         End 'FIN MACRO
      End If
      Range("A1").Interior.ColorIndex = 10
   Loop

Les seuls paramètres à prendre en compte :

> Est le fait que l'application ZAZ StopMacro, crée bien un fichier .txt, du nom de STOP.txt, sur votre bureau utilisateur.

> Que votre code V.B.A. vérifie bien sur votre bureau utilisateur, l'existence du fichier STOP.txt, afin d'être raccord avec ZAZ.

> D'éviter de créer des fichier .txt, au nom de "STOP", mais cela doit être très rare...

> D'éviter de lancer la macro, si le fichier STOP est toujours présent sur votre bureau, d'où l'intérêt de prévoir sa suppression dans votre code, une fois l'application arrêtée par ZAZ.


Masterclass avancé :

1. Evénements d'ouverture de classeur

2. Utilisation de ZAZ dans un classeur où une image tourne à l'infinie

1. Evénements d'ouverture de classeur

Ensuite, vous pouvez aussi prévoir à l'ouverture de votre classeur de lancer l'application automatiquement.

'Private Sub Workbook_Open()
'A chaque ouverture lancer l'application
'0. Gestion erreur, si erreur passe, application non lancée ou déjà ouverte
On Error Resume Next
'1. Déclaration variable PATH_LANCEMENT_ZAZ_STOPMACRO de chemin d'accès à application comme étant du texte
Dim PATH_LANCEMENT_ZAZ_STOPMACRO As String
'2. Définition du chemin d'accès de l'application, casse majuscule pris en compte, sinon erreur
PATH_LANCEMENT_ZAZ_STOPMACRO = "C:\Users\waard\Desktop\ZAZ STOPMACRO\ZAZ STOPMACRO.exe"
'3. Lancement de l'application, visible dans barre de notification
Shell PATH_LANCEMENT_ZAZ_STOPMACRO
End Sub

Dans cet événement, vous pouvez aussi prévoir de vérifier l'existence du fichier STOP est le supprimer de manière automatique... Tout est possible, tout dépendra de votre imagination ou de vos besoins.


2. Utilisation de ZAZ dans un classeur où une image tourne à l'infinie

Exemple d'utilisation de ZAZ StopMacro, vous trouverez ci-joint, ci-dessous le fichier "Smiley tourne tourne", où vous trouverez les explications, pour faire tourner un smiley dans une boite, qui à chaque tour change de couleur 8) , tout en gardant la main sur le classeur pour y faire des opérations et découvrir la consommation en ressources matériels d'un tel fichier.

Sub ROTATION_INFINIE_SMILEY()

'Déclaration variable ZAZ_STOPMACRO comme chaine texte
Dim ZAZ_STOPMACRO As String
'Déclaration variable DEGREE_ROTATION comme valeur double.
Dim DEGREE_ROTATION As Double

'Définition variable ZAZ_STOPMACRO du chemin+nom fichier STOP.txt
ZAZ_STOPMACRO = "C:\Users\waard\Desktop\STOP.txt"  '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Remplacez C:\Users\waard\Desktop, par votre propre chemin
'Définition du degré de rotation de départ du smiley dans la boite à 0 degrés
DEGREE_ROTATION = 0

On Error Resume Next 'Gestion des erreur par si erreur passer et continuer

'---------------------------------------------------------------------------------------------------------
'Boucle sans fin DO WHILE ... > LOOP, Rotation infinie du smiley avec changement de couleur, Tant que cellule A1 vide (mais ça c'est un secret)
Do While IsEmpty(ThisWorkbook.Worksheets(2).Range("A1"))

   DoEvents 'Raffraichir l'application pour y garder la main

   '_____________________________________________________________________________
   'Process de retour à zéro quand tour complet réalisé avec changement de couleur en même temps
   If DEGREE_ROTATION >= 350 Then
   'Retour à zéro quand tour complet fait
   DEGREE_ROTATION = 0
   'Changement de couleur Vert > Rouge > Vert > etc
   If ThisWorkbook.Worksheets(1).Shapes.Range(Array("Smiley Face 3")).Fill.ForeColor.RGB = RGB(0, 176, 80) Then '= RGB(0, 176, 80) 'Vert
      'Si vert passe en rouge
      ThisWorkbook.Worksheets(1).Shapes.Range(Array("Smiley Face 3")).Fill.ForeColor.RGB = RGB(255, 0, 0) 'Rouge
      Else
      'Si rouge passe en vert
      ThisWorkbook.Worksheets(1).Shapes.Range(Array("Smiley Face 3")).Fill.ForeColor.RGB = RGB(0, 176, 80) 'Vert
   End If
   End If
   '_____________________________________________________________________________

   'Rotation du smiley à la valeur DEGREE_ROTATION
   ThisWorkbook.Worksheets(1).Shapes.Range(Array("Smiley Face 3")).ThreeD.RotationX = DEGREE_ROTATION
   'Ajout +10 degrés à DEGREE_ROTATION pour la prochaine rotation
   DEGREE_ROTATION = DEGREE_ROTATION + 10

   'Process de sortie par ZAZ STOPMACRO
   If Not Dir(ZAZ_STOPMACRO, vbDirectory) = "" Then 'Si fichier STOP.txt existe => FIN MACRO
   Kill ZAZ_STOPMACRO 'Supprimer le fichier ZAZ_STOPMACRO
   End 'FIN MACRO
   End If

Loop
'---------------------------------------------------------------------------------------------------------

End Sub

Voilà 2/3 bidoullages qui devraient vous aider, bon tests de l'application et faites des zaz, plutôt que des plantages.

Tentative d'explications en anglais, avec mon mauvais anglais de maudit français.

So! I using my very bad english language for my external commandbutton.

Application VB.Net language : ZAZ StopMacro, it's external commandbutton for stop macro, that's insert in your notification bar and has 2 options :

"Stop Macro" for launch action STOP

"Quit" for closing ZAZ

Concept Model Data :

User's launching macro that's turning in endless loop, with control line If file:"stop.txt" on user desktop exist

> Excel's freezing while endless loop

> If user click:"Stop Macro" on external commandbutton, then ZAZ's created file:"STOP.Txt" on user desktop

In endless loop macro, to control if file's:"STOP.txt" exist on user desktop :

1. Return:"No exist" file:"stop.txt", loop continue

2. Return:"Yes" file:"stop.txt", end loop/macro

=> Excel freezing liberate, you have manual control return.

Yes, communication VB.Net with VBA by file .txt 8)

screen mcd zaz stopmacro

ZAZ Create at your demand > File's desktop:"Stop.txt" < VBA Code to control if file exist

To instal :

Control1: ZAZ should have create file's:"stop.txt" on your user desktop, after you have push external commandbutton:"Stop Macro"

Control2: In your VBA code, you must write file's control IF is existing on your user desktop.

Made with Visual 2010

zaz stopmacro

Tschüss

Info

Avis de nouvelle version de mes macros de mon projet MYRMIDON Lettrage v.3.3 compatibles avec ZAZ StopMacro.

presentation myrmidon compatible avec zaz

Sortie de MYRMIDON Lettrage 3.3 sous peu, qui sera comme toujours dispo dans la section téléchargement.

Rechercher des sujets similaires à "zaz stopmacro bouton interrupteur externe"