Taille d'une macro

Rebonjour,

J'essaie de refaire une macro avec mon mac. Dans une versions précédente, je n'avais pas ce problème.

Maintenant, je ne parviens pas à faire cette macro car une fois lancée, il me met procédure too large.

Est -ce qu'il y a un moyen de voir au fur et à mesure que j'avance dans la macro si je suis dans le bon ou pas.

Je passe du temps depuis 3 jours et chaque fois quand je lance cela coince.

Y a t'il des alertes ?

Merci.

Antoine

Bonjour

Oui Cela s'appelle Débogage.

faire du pas à pas pour voir ce qui pose problème

A+

Bonjour, Salut Patty !

Dis-nous comment tu essaies de faire une macro ? A quelles réflexions préalables tu te livres avant de commencer à écrire du code ?

Car si tu produis une macro interminable au point que le compilateur dise Stop, c'est qu'à la base il faut peut-être réviser ta façon de concevoir une macro...

Pour ne pas parler dans le vide, tu peux peut-être expliquer plus concrètement ce que tu essaies de produire...

A mes débuts, on expliquait qu'une bonne macro, elle fait une chose, pas 10, et que si on veut en faire 10, mieux vaut faire 10 macros, et une 11e qui utilisera les 10 pour qu'elles concourent au résultat cherché !

Cela s'appelle programmation modulaire.

De cette façon on ne parvient certainement jamais à être too large !

Cordialement.

Bonjour Antoine,

Patty t'a répondu ce qu'il faut pour le pas à pas : il s'agit bien de faire du débogage ; j'apporte une réponse plus directe pour ton problème particulier : « procedure too large » = « procédure trop grande » : cette erreur se produit car la taille de ta procédure dépasse 64 Ko :

screen

Cordialement,

dhany

A mes débuts, on expliquait qu'une bonne macro, elle fait une chose, pas 10, et que si on veut en faire 10, mieux vaut faire 10 macros, et une 11e qui utilisera les 10 pour qu'elles concourent au résultat cherché !

Cela s'appelle programmation modulaire.

Bonjour,

De mon temps on nous expliquait aussi qu'une bonne macro ça doit tenir dans un écran... Pas besoin de scroller !

C'est bon... :

A+

Bonjour à tous

combien de modules et combien de lignes (par module) ?

ça serait étonnant que ça vienne de là °_°

P.

Sacré Galopin ! Mais tu as toujours raison !

Bonjour tout le monde cela ma parais aussi bizarre d'une procédure trop longue... dans un de mes plus grands projets j'arrive a quelques milliers de lignes dans une dizaine de modules....

il faudrait voir le code en question....

donc

fred

Bonjour à tous

A quand le fichier....????

On se languit ...pour pouvoir faire planter nos machines...

A bientôt

Ah oui, mais j'crois qu'avec tous nos messages, Antoine a bien compris quel est le problème ! il doit donc être en plein travail pour découper sa longue procédure de plus de 64 Ko en plusieurs procédures plus petites !!! donc quand il aura terminé, son problème sera réglé et il lui suffira de passer ce sujet en résolu : plus besoin de transmettre son fichier initial !

Bonjour,

Désolé de ne pas avoir pu répondre plus tôt.

En fiat, il s'agit de la mise en forme d'un fichier qui provient d'un software qui nous donne pour chaque personne une valeur pour chaque code.

En gros 700 personnes (lignes) et 300 (codes) colonnes.

Je dois faire quelques sommes, les seuls fonctions sont NB et si....

Je voudrais pouvoir suivre ce que je fais. En fait j'enregistre macro et je fais ma mise en page avec mes sommes etc... et puis j'arr^te la macro.

J'enregistre le fichier.

Et puis quand je lance cette macro sur un autre fichier.. il plante.

Comment voir si on est au dessus de 64 ?

Antoine

Bonjour Antoine,

Tu a écrit :

Comment voir si on est au dessus de 64 ?

C'est justement le message « procedure too large » qui indique que la macro est au-dessus de 64 Ko ; s'il y a un autre moyen, je ne vois pas lequel ; mais perso, j'ai jamais ce message car je fais une programmation modulaire, pour laquelle chaque module tient de façon naturelle dans la limite des 64 Ko.

Même s'il y a 700 personnes × 300 codes (donc 700 lignes × 300 colonnes), je pense comme toi que quelques sommes et juste des fonctions NB et SI devraient passer ; aussi, je crois que le problème doit plutôt être créé par la mise en page, mais il faudrait en savoir plus là-dessus : quel est le genre de mise en page que tu fais ? pour cela, le plus simple serait d'examiner ce qu'a enregistré la macro pour ton fichier initial, mais sans fichier, évidemment...

On pourrait alors à la fois : a) optimiser la macro (réduire le code et l'écrire mieux que ce qu'a fait l'enregistrement auto) ; b) voir quelle partie du code VBA est éventuellement susceptible d'empêcher l'exécution de cette macro pour un autre classeur Excel, et l'adapter alors en conséquence (mais ça peut aussi venir seulement des données de la feuille de calcul, voir ci-dessous).

Le fait que la même macro marche dans ton fichier initial et pas dans un autre peut avoir de multiples causes ; exemples : feuille protégée sur l'un et pas sur l'autre, structure des données pas aussi identique que tu le pensais, format des données qui paraît identique et ne l'est pas (notamment dates "texte" sur l'un et vraies dates sur l'autre, dates avec jour et mois inversés), espaces invisibles en trop dans des données, ou par exemple à la fin d'un nom de feuille...

L'enregistrement auto d'une macro peut bien dépanner dans de nombreux cas, mais ce n'est pas la panacée : ça écrit souvent du code supplémentaire inutile en plus, qu'on peut donc effacer ; l'« intelligence » limitée de l'enregistrement auto fait qu'il écrit un code général, car il ne peut pas déterminer la logique d'ensemble qui mène à la finalité du résultat qu'on cherche à obtenir ; de plus, il met souvent des références relatives par rapport à la position de la cellule active, donc le traitement n'est alors plus valable si au moment de l'exécution la cellule active est différente de celle de départ au démarrage de l'enregistrement auto.

Si tu veux envoyer ton fichier (avec toutes les données ou seulement une partie), n'oublie pas de l'anonymiser (pas d'infos confidentielles).

L'intervenant qui t'aidera ne devra pas oublier que ton ordi est un Macintosh (certaines fonctionnalités d'Excel version PC ne tournent pas dessus !).

Cordialement,

dhany

Bonjour,

Merci de prendre tout ce temps pour me répondre. Cela me fait vraiment plaisir.

Je vais refaire la macro depuis le début. Et vous l'envoyer. Cela prendra un peu de temps car je suis absent pendant quelques jours.

Je fais cela dès que je peux.

Antoine

Rechercher des sujets similaires à "taille macro"