Comment empecher une macro dêtre exècuté plusieurs fois

chuinul

XLDnaute Occasionnel
re-re bonjour a tous,

J'ai fais (avec votre aide) une macro qui ne doit absolument pas être exécué deux fois sur le même fichier, sinon, tout part en vrille...

1) est-ce qu'il existe une fonction qui empèche une macro d'être exècuté plusieurs fois?
2) est-ce qu'il existe une petite feinte? (j'adore les feinte)
3) est-ce que quelqu'un pourrait m'aider a coder un truc dans ce principe :

  • a la première exécution de la macro, on écrit dans un coin du fichier un petit truc qui nous sert de flag (genre "oui/non" )
  • on fait un test au début de la macro pour voir si il y a ce flag ou pas
    • si il existe, ben on arrete la macro
    • si il existe pas on exécute le reste et on met le flag a oui

Quelqu'un peu m'aider? (je suis vraiment une quiche, mais je veux apprendre)
 

porcinet82

XLDnaute Barbatruc
Re : Comment empecher une macro dêtre exècuté plusieurs fois

Salut,

Pour ma part j'utiliserai une feinte avec un booleen dans une variable déclarée de manière public.
Pour faire ca, tu places le code Public bool As Boolean dans un module (bool étant le nomde la variable). Ensuite tu mets genre ceci :
Code:
Sub tamacro()
If bool = False Then
     [COLOR=green]'Le code de ta macro[/COLOR]
End If
bool = True
End Sub

@+
 

chuinul

XLDnaute Occasionnel
Re : Comment empecher une macro dêtre exècuté plusieurs fois

Alors en fait il y a un cas dans lequel cette solution ne marche pas :

Quand le fichier est enregistré, fermé puis ré-ouvert, la variable Bool est réinitialisé a true, et donc la macro peut se rééxécuter...

Alors pour mon cas je saurai comment faire (théoriquement), mais je ne saurai pas le coder : il me suffirai de lire toutes les cellules de la colonne U et si elles sont TOUTES vides, alors je peux lancer l'éxécution, si il y a ne serait-ce qu'une cellule de remplir, elle ne doit pas s'éxécuter (Bool = False)

Il suffirait de mettre ce petit test au tout dédut de mon code..... Quelqu'un pourrait m'aider a le faire ;)


MERCI D'AVANCE
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : Comment empecher une macro dêtre exècuté plusieurs fois

re,

J'étais parti sur une autre solution que celle de Pascal (que je salue au passage) donc je la mets pour la culture :
If Not Application.WorksheetFunction.CountIf(Columns(21), "") = 65536 Then Exit Sub

@+
 

porcinet82

XLDnaute Barbatruc
Re : Comment empecher une macro dêtre exècuté plusieurs fois

re,

Pas de soucis, je repasse juste pour t'expliquer. En faite, CountIf correspond a la fonction NbSi présente dans les feuilles excel, tout simplement. Tu vas me dire, j'aurai pu directement utiliser NbVide... :rolleyes:

@+
 

Discussions similaires

Réponses
1
Affichages
333
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz