si telle_macro tourne alors, sinon...

benouboy

XLDnaute Nouveau
Bonjour le forum...!

me voila bien embetté avec le problème suivant... J'ai un fichier dont certaines cellules sont protégées afin que leur contenu ne soit modifiable que par des macros en background (appel de user form entre autres). Les macros impliquées ont donc un activesheet.unprotect au debut et un .protect a la fin...

Mais j'ai un soucis avec la procédure worksheet.change : en effet celle-ci est appellée soit lorsque l'utisateur modifie "en direct" le contenu d'une des cellules non-protégées, soit lorsque une des autres procédures a modifié le contenu d'une cellule. Dans le premier cas j'ai besoin d'un .unprotect au debut et d'un .protect a la fin, mais dans le deuxieme cas le .protect à la fin ne m'arrange pas car mon autre procédure en cours a encore des modifs à faire dans bien des cas...

Je cherche donc un test dans ma procédure worksheet.change du genre "si telle macro est en cours alors pas de protection a la fin, sinon protège la feuille à la fin de ma procédure...". J'ai tenté avec un flag booléen en prenant soit de définir mes autres procédures en static, mais ca ne marche pas...

Par avance merci, j'espère avoir été clair...
 

benouboy

XLDnaute Nouveau
Re : si telle_macro tourne alors, sinon...

Salut Kobaya, le forum,

Merci à toi, bonne idée, je ne connaissais pas cette méthode...

Mais! (désolé) en l'occurence, je voudrais quand même lancer mon Sub Worksheet.Change lorsque qu'une autre macro fait une modif... donc ta piste ne semble pas me convenir ici... Une autre idée ? Comment faire par exemple pour qu'un flag booleen attribué dans ma macro active puisse être testé dans mon worksheet.change?

Par avance merci!
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : si telle_macro tourne alors, sinon...

Bonjour

Juste une petite incursion pour saluer Thierry et lui dire que cela fait plaisir de le revoir sur des fils.

Ah ce fameux .... Application.EnableEvents = False

Il en a fait couler de l'encre ou du moins taper sur un clavier ;)

Bon appétit
 

Papaye

XLDnaute Occasionnel
Re : si telle_macro tourne alors, sinon...

Bonjour les garçons,

Je ne suis pas sur d'avoir compris la prose de benouboy, mais tu peux déclarer une variable Public dans le début d'un module (du genre MaMacroTourne). Tu inities cette variable à False.
Dès que ta macro (ou tes macros) se déclenche(nt) tu passes MaMacroTourne = True.
Après dans ton worksheet.change, il te suffit de mettre à la fin un test
if MaMacroTourne then pas de protection sinon protection
Il ne faut pas oublier de remettre en fin de macro MaMacroTourne à False

C'est juste ?
 

benouboy

XLDnaute Nouveau
Re : si telle_macro tourne alors, sinon...

Ayé!

Grâce à vos bons conseils, j'ai enfin pu utiliser mon flag (d'une manière analogue à la méthode Thierry)... Ce qui me manquait tout simplement c'est le fameux :

Public Running As Boolean

Je me coucherai donc moins bête ce soir, merci a vous!!!!
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : si telle_macro tourne alors, sinon...

Bonjour Pascal, Papaye, re le Fil le Forum

Merci Pascal, et oui la Tournée des R.S. m'a pris un peu de temps !!! lol Mais maintenant je reviens un peu sur XLD... Et ça me fait également très plaisir de te recroiser !

Oui Papaye, c'est bien celà, c'est d'ailleurs tout à fait et complètement documenté dans le lien sur le fil que j'ai mis...

Bon App à tous !

@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 374
Messages
2 087 728
Membres
103 655
dernier inscrit
MOUNIRACH16