Executer une macro qu'une seule fois par document

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 !

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.
 
Re : Executer une macro qu'une seule fois par document

le fichier de nomenclature peut etre ouvert n'importe qd, cela peut etre dans l'heure, ou dans la journée, ou 1 semaine apres.

Si tu veux plus d'informations: les fichiers nomenclatures correpondent a des plans, si j'ai une modif a faire sur le plan, il faudra reexecuter la macro sur le fichier excel.

Je pensais utiliser la fonction ActiveWindow.Close dans la fonction compteur mais je ne sais pas le faire. C'est a dire, si je ferme ma fenetre de n'importe quelle nomenclature alors je peux reexecuter la macro
 
Dernière édition:
Re : Executer une macro qu'une seule fois par document

Tu peux essayer de mettre ca dans ton code

Sub test()
'=============================
'a mettre au debut
'=============================
For Each c In ThisWorkbook.Sheets("feuil2").Range("A1:A65536")
If c.Value = ActiveWorkbook.Name Then
MsgBox "Ce classeur a deja ete traité"
Exit Sub
End If
Next
'==========================
'ta macro
'==========================


'=============================
'a mettre a la fin
'=============================
'recupere la valeur de la premiere ligne vide
a = ThisWorkbook.Sheets("feuil2").Range("A65535").End(xlUp).Row + 1
'y inscrit le nom du classeur
ThisWorkbook.Sheets("feuil2").Cells(a, 1).Value = ActiveWorkbook.Name

End Sub


tu aura dans ton classeur de macro une feuille 'feuil2' qui contiendra les noms de tous les classeurs que tu viens d'ouvrir
Si tu n'efface pas cette feuille tu pourras meme avoir un historique
sinon il te suffit de supprimer de la liste creee la ligne contenant le nom du fichier que tu as besoin de traiter
 
- 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