Executer une macro qu'une seule fois par document

superniko

XLDnaute Nouveau
Bonjour tt le monde,

Je suis un novice sous VBA,

J'aimerais savoir quelle est la commande en VBA pour executer une macro une seule fois. Je souhaiterais avoir avec un message par ex:
"la macro a déja été executé" lorsque l'on clique a nouveau sur l'icone de la macro.

Ma macro se trouve dans un fichier "classeur1.xls" et elle s'execute avec d' autre fichier ouvert (fichier de nomenclature en .xls) à l'aide de l'icone personnaliser sous lequel j'ai raccroché ma macro.

J'espere que ma question est claire.

Merci pour votre partage des connaissances.
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Executer une macro qu'une seule fois par document

Salut,

Il suffit que tu rajoutes une condition sur un compteur par exemple.

Dans ton code, tu crées un compteur que tu initialises à 0 et qui prendra la valeur 1 par exemple à la première exécution. Avec la condition "si compteur = 0" tu éxecutes ton code et sinon tu fais rien.

Si c'est pas clair, mets nous un exemple de ton code ;-)

Sylvain
 

porcinet82

XLDnaute Barbatruc
Re : Executer une macro qu'une seule fois par document

Salut,

Pour apoprter quelques info supplémentaires à la solution de Sly, il fat que tu déclares ta variable compteur en Public. Le code suivant à l'air de fonctionner :

PHP:
Public cpt As Integer

Sub test()
    If cpt = 1 Then Exit Sub
    MsgBox "Essai"
    cpt = 1
End Sub

@+
 

superniko

XLDnaute Nouveau
Re : Executer une macro qu'une seule fois par document

Merci bcp porcinet82 car je suis vraimant débutant et je ne savais pas le faire

Par contre, le message apparait des que j'execute la macro pour la 1ere fois

Est il possible de faire afficher le message si je relance la macro?

Nicolas
 

superniko

XLDnaute Nouveau
Re : Executer une macro qu'une seule fois par document

La macro marche egalement avec les 2 valeurs de mon compteur a 0
Le probleme c'est que des que je vreux ouvrir un autre fichier pour effectuer ma macro, cela ne marche plus

IL faudrait que la fonction compteur marche seulement pour chaque fichier ouvert. Des que je'ouvre un nouveau fichier il faudrait reinitialiser le compteur.

Je sais pas si je sui claire
Si possible est il possible de m'expliquer en meme temps dans la macro evec des ' pour m'expliquer la ligne.

Merci beaucoup de votre aide
 
Dernière édition:

lapix

XLDnaute Occasionnel
Re : Executer une macro qu'une seule fois par document

Salut

Alors tu peut creer dans chaque classeur une feuille ou tu stockeras la valeur du compteur soit 0 soit 1

la macro deviendra alors :

Sub test
()
If sheets("nomdetafeuille").cells(x,y).value
= 1 Then 'x= numero de ligne y = numero de colonne
MsgBox
"la macro a dejà tourné sur ce classeur"
Exit Sub
End
If
sheets("nomdetafeuille").cells(x,y).value= 1

suite de la macro
End Sub
 

superniko

XLDnaute Nouveau
Re : Executer une macro qu'une seule fois par document

Je ne peux pas creer de feuille dans les classeurs ou j'execute ma macro

En fait la macro se situe dans mon fichier "classeur1.xls" qui s'ouvre par defaut lors de l'ouverture d'excel.
Ensuite
la personne recupere des feuillesexcel de nomenclatures a modifier ou j'execute ma macro pour modifier des quantités.
La personne recupere peut etre une 100ene de feuille par jour donc il est pas conseille de faire ta methode. Seul le fichier classeur1.xls doit etre modifié car c'est ce fichier qui contient ma macro.

Merci qd meme pour ta solution.
 

superniko

XLDnaute Nouveau
Re : Executer une macro qu'une seule fois par document

Je peux retrouver ce classeur; on va dire 1/5 voire 2
Il s'agit de fichier nomenclature il se nomme par un numero a 12 chiffres.
Il se peux que le fichier revienne.

Ce qu'il faudrait c'est pouvoir reexecuter la macro, si l'on ferme le fichier modifié ou des que l'on ouvre un nouveau fichier.
 
Dernière édition:

lapix

XLDnaute Occasionnel
Re : Executer une macro qu'une seule fois par document

superniko à dit:
Si vous souhaitez j'ai une adresse msn, pour msn messenger...

C'est surtout pour bien comprendre
En fait tu as besoin d'identifier ce classeur combien de temps ?
Un jour, 2 jours, le temps qu'il est ouvert ?
Tu peux etre amené a l'ouvrir a nouveau dans l'heure ?
 

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 233
Membres
104 456
dernier inscrit
mango53200