Activer - désactiver les macros

Bonsoir le forum,

J'ai un classeur Excel composé de 36 onglets, dont 33 avec des macros. Sur ces 33 onglets, 30 sont identiques ("Colonne ECS (x)"). Ces macros consistent essentiellement à masquer des lignes en fonction de la valeur d'une cellule.

Les macros fonctionnent très bien, mais J'ai un petit soucis : dans la feuille "Colonne ECS (1) par exemple, lorsque que je saisis des valeurs dans les cellules, et qui ne sont pas concernées par la macro, c'est très lent et je ne peux pas faire de copier-coller, car Excel plante carrément.

Pour que je puisse travailler normalement je suis obligé de désactiver les macros, à l'ouverture du classeur.

Quelqu'un pourrait-il me dire se qui pêche dans l'exécution des macros ? Y-a-t-il un moyen pour que lorsque la macro est exécutée, celle-ci s'arrête ?

D'autre part, j'avais pensé pour m'affranchir de ce problème de lenteur et de plantage, de lancer une macro avec bouton "activer/désactiver les macros", qui me permettrait d'activer ou de désactiver les macros, mais mes connaissances sont très limitées, je sollicite donc encore de l'aide.

Merci.

96exemple.zip (73.99 Ko)

Salut,

Dans le fichier ci-joint, sur la feuille 2, tu as deux boutons reliés à deux macros qui empêchent ou autorisent les macros événementielles. Pour faire des essais, tu peux cliquer dans les deux cellules brunes afin de voir si la macro événementielle qui y est reliée est activée ou non.

Sinon, pour ton problème, tu devrais expliquer une peut mieux de quoi il s’agit : quelles cellules sont remplies lorsque survient ton problème ? Quelles actions effectues-tu qui te créent des soucis ?

Cordialement.

178exemple-v2.zip (74.35 Ko)

Bonjour Yvouille,

Merci pour ton aide.

Pour répondre à tes questions :

  • les cellules dans lesquelles je saisis des valeurs, sont les cellules avec fond jaune. Dans les autres cellules, il y a des formules.
  • mes problèmes : lenteur lorsque je saisis des valeurs dans les cellules, plantage d'Excel lorsque je fais un copier/coller.

Pour les copier/coller, je pense avoir trouvé la solution, j'ai rajouté "Application.ScreenUpdating = True" dans les macros.

D'autre part, j'ai un soucis pour l'onglet "Collecteur", lorsque je saisis une valeur dans la cellule (D11) ça rame et ça plante. La valeur saisie dans cette cellule, masque les lignes en fonction du nombre saisi. Par exemple si la valeur de cette cellule est 15, les lignes (30:54 et 81:105) sont masquées, mais cette valeur impacte également d'autres onglets (Feuil4 et Feuil5).

Si tu as une idée, celle-ci sera la bien venue.

Merci encore.

91exemple-1.zip (73.92 Ko)

Salut,

Je t’ai fourni de l’aide par rapport à une question précise, mais tu ne me dis pas dans quelle mesure ça t’aide. Ceci pourrait être un encouragement pour moi afin d’avoir l’envie de t’aider plus.

Tes macros sont une véritable usine à gaz et ça ne donne pas trop l’envie de s’y plonger. De plus tu sautes d’un problème à l’autre et lorsque l’on a l’impression d’avoir compris le premier – par exemple ton problème sur la feuille ‘’ Colonne ECS (1)’’ - tu passes déjà au problème suivant, par exemple celui de ta feuille "Collecteur".

Enfin tes explications ne sont pas toujours très claires et lorsque tu dis par exemple ‘’ mais cette valeur impacte également d'autres onglets (Feuil4 et Feuil5)’’, on a aucune idée de quel est cet impact.

Tout ceci pour te dire que si tu désires que je continue à t’aider, on va presque devoir ignorer tes macros actuelles, que tu me dis avec précision – en faisant référence aux objets Excel - ce que tu voudrais obtenir comme résultat et que je regarde quelles macros je peux te proposer. Dans le cas contraire, je te propose que tu indiques ce fil comme ‘’Résolu’’ (peu de membres s’intéressant encore à un fil bien entamé) et que tu en recommences un autre en tachant d’être plus précis dans tes demandes.

A te relire.

Bonsoir Yvouille,

Je pensais avoir été clair dans mes messages mais apparemment ce n'était pas le cas. Dans le premier message je demandais de l'aide pour qu'on me dise ce qui n'allait pas dans les macros et pourquoi c'était si lent. La solution de je voyais était 'activer/desactiver les macros, au moyen d'une macro commandée par un bouton.

Tu m'as apporté une solution pour activer ou désactiver les macros et je t'en remercie, car cela me servira sans doute pour un autre projet.

Dans mon deuxième message je te disais que j'avais trouvé la solution pour éviter qu'excel se plante lorsque je faisais un copier/coller et je te sollicitais pour voir ce qui pêchait dans les macros de l'onglet "Collecteur", car Excel était très lent. Mais j'ai trouvé la solution aujourd'hui en supprimant la boucle "For next" et en créant des macros pour les onglets spécifiques, plutôt que d'avoir une macro qui s'applique à plusieurs onglets.

Merci encore pour ton aide.

Salut,

Je t’ai montré comment activer ou désactiver les macros événementielles par l’intermédiaire de deux boutons avec les instructions :

Application.EnableEvents = True

et

Application.EnableEvents = False

Parfois, certains événements peuvent effectivement perturber une macro et tu peux placer ces deux instructions directement à l’intérieur de celle-ci de la manière suivante :

Sub Xxxxx()
    Application.EnableEvents = False
        ' Ton code qui te cause du soucis
    Application.EnableEvents = True
End Sub

C’est parfois plus utile que l’instruction

Application.ScreenUpdating = False

Si ton problème est résolu, n’oublie pas de l’indiquer comme tel, selon l’icône dans ma signature.

Chaleureusement.

Bonjour Yvouille,

Encore merci pour ton aide.

Très bonne journée.

Rechercher des sujets similaires à "activer desactiver macros"