Formule tros longue

Bonjour,

J'ai une fomule longue qui imbrique beaucoup de si et qui alourdit mon fichier.

Voici la formule, si quelqu'un peut m'aider à réduire la formule.

=SI(

ET(

Baseline!$K6<>"";

Baseline!$C6<>"";

Baseline!$K6<=Baseline!$C6;

ANNEE(Baseline!$K6)<=config!$A$2;

ANNEE(Baseline!$C6)>=config!$A$2

);

SI(

ANNEE(Baseline!$K6)<config!$A$2;

DATE(config!$A$2;1;1);

SI(

ANNEE(Baseline!$K6)>config!$A$2;

"";

SI(

MOIS(Baseline!$K6)=1;

Baseline!$K6;

SI(

OU(

ET(

MOIS(Baseline!$K6)<1;

MOIS(Baseline!$C6)>=1

);

ANNEE(Baseline!$C6)>config!$A$2

);

DATE(config!$A$2;1;1);

""

)

)

)

);""

)

Cdlt.

Saliou

Bonsoir,

Tu pourrais peut-être trouver une méthode plus conviviale pour présenter tes formules...

Ce n'est surement pas cette formule qui alourdi ton fichier (sauf si tu la répètes sur 1 000 000 de lignes)

En principe ce qui alourdi considérablement les fichiers Excel ce sont les accessoires graphiques en tout genre (boutons, images, graphes...), format (couleurs, polices, bordures...) et/ou suppressions (partielles ou entières) de lignes, colonnes, feuilles.

Un classeur de ce genre, -s'il est important- doit faire l'objet de nombreuses copies différentes.

A plus forte raison si la moindre suppression entraine une augmentation importante de la taille du fichier.

Peux tu en dire un peu plus sur ce classeur.

Tu pourrais peut-être en exporter quelques feuilles dans un nouveau classeur. En orécisant si l'une ou l'autre feuille se répète de nombreuses fois.

Le transfert dans un nouveau classeur de tout ou partie des feuilles entraîne en général un perte de poids importante.

Sauf exception (en général l'apanage d'utilisateur chevronnés) On peut considérer qu'un classeur de plus de 2 Mo est bien malade.

A+

Bonjour Galopin,

Merci d'avoir répondu à mon message,

je joins une portion de mon fichier que j'ai considérablement diminué pour pouvoir le joindre et même en enlevant plein de ligne, il fait presque 2 Mo,

Merci de le télécharger sur ce lien:

A te relire.

Merci.

Saliou

Bonjour,

Il y a d'autres feuilles dans le classeur ?

Au vrai combien de lignes dans la feuille "Coverage" ?

Je viens de faire une copie de ton classeur : 288 Ko Compressé 179 Ko !

(cf fichier joint ) et contrairement à ce que tu penses c'est la deuxième feuille qui pèse le plus lourd !

Ce qui signifie que ton fichier est sans doute pollué par les nombreux résidus de tes bricolages précédents.

On pourrait sans doute pinailler en bricolant quelques formules et on gagnerait sans doute encore quelques Ko mais ce n'est pas le plus urgent.

Pour rendre à ton classeur une taille normale :

Ouvrir le classeur.

faire un Clic Droit sur le premier onglet > Déplacer ou copier

Dans la boite de dialogue

Cocher créer une copie puis (en haut) choisir "nouveau classeur"

duplique

Enregistrer ce nouveau classeur sous un autre nom -"galopin" par exemple- mais ne pas le fermer.

Dans l e ruban, onglet Affichage > Changer de Fenêtre pour basculer sur le classeur d'origine

Procéder de même pour toutes les autres feuilles mais cette fois ci dans la boite de dialogue au lieu de placer les copies dans un nouveau classeur choisir "galopin".

Je pense qu'à l'issu de ce traitement ton classeur aura retrouvé une seconde jeunesse...

A+

11test-copieg.xlsx (287.66 Ko)

Bonjour Galopin,

Tout d'abord merci de ton aide,

galopin01 a écrit :

Bonjour,

Il y a d'autres feuilles dans le classeur ?

Au vrai combien de lignes dans la feuille "Coverage" ?

Oui il y'ad'autres feuilles dans le classeur, mais si je supprime la feuille "coverage", je constate que mon fichier retrouve une taille que je considère normale; c'est pour ça que je me suis dit que c'est la feuille "coverage" qui alourdit mon fichier.

Dans la feuille "coverage", il y'a plus de 200 000 cellules dans lesquelles ma fameuse formule s'applique.

galopin01 a écrit :

Je viens de faire une copie de ton classeur : 288 Ko Compressé 179 Ko !

(cf fichier joint ) et contrairement à ce que tu penses c'est la deuxième feuille qui pèse le plus lourd !

Ce qui signifie que ton fichier est sans doute pollué par les nombreux résidus de tes bricolages précédents.

En faisant un copier coller des données dans un nouveau classeur, le fichier retrouve sa taille normale, donc ce ne sont pas les données( ce qui me fait encore dire que c'est soit les formules ou bien les macros qui alourdit le fichier).

En plus, en enregistrant le classeur sous forme .xslx( donc sans macro ), le fichier retrouve sa taille normale...

galopin01 a écrit :

Pour rendre à ton classeur une taille normale :

Ouvrir le classeur.

faire un Clic Droit sur le premier onglet > Déplacer ou copier

Dans la boite de dialogue

Cocher créer une copie puis (en haut) choisir "nouveau classeur"

Enregistrer ce nouveau classeur sous un autre nom -"galopin" par exemple- mais ne pas le fermer.

Dans l e ruban, onglet Affichage > Changer de Fenêtre pour basculer sur le classeur d'origine

Procéder de même pour toutes les autres feuilles mais cette fois ci dans la boite de dialogue au lieu de placer les copies dans un nouveau classeur choisir "galopin".

Je pense qu'à l'issu de ce traitement ton classeur aura retrouvé une seconde jeunesse...

J'ai fait ta manipulation mais ça ne change pas grand chose

galopin01 a écrit :

On pourrait sans doute pinailler en bricolant quelques formules et on gagnerait sans doute encore quelques Ko mais ce n'est pas le plus urgent.

Pourrais tu m'aider à optimiser la formule ??

Encore merci.

A te relire.

Saliou

T'as la tête dure hein !

ça tombe bien moi aussi !

J'ai donc reconstitué la feuille "coverage" intégralement. C'est à dire non pas par duplication mais à partir d'un classeur neuf.

La seule chose que j'ai copié collé c'est les en-têtes de colonnes. Toutes les autres formules ont été entrée à la main puis par incrémentation jusqu'à la ligne 10 000 (240 000 cellules environ) Et le tout pèse moins de 3Mo avec les feuilles 1 et 2...

J'ai quand même un liaison qui se cache quelque part, mais c'est peut-tre sur la Feuil1 ou la feuil2 pour lesquelles j'ai fait moins attention. (elles sont Hidden) je ne les ai recopiées que pour vérifier que ma formule fonctionnait bien.

Ma formule est un peu différente de la tienne (et un peu plus longue) car c'est la même pour toutes les cellules : YAKA la copierColler en B6 et à incrémenter sur toutes les colonnes et toutes les lignes.

Avant de copier cette formule tu dois installer la formule nommée SLF dans le Gestionnaire de noms avec dans la zone

Fait Référence à :

=SI(MOD(12+COLONNE()-1;12)=0;12;MOD(12+COLONNE()-1;12))

Ensuite Copier/Coller la formule ci dessous en B6.

=SI(ET(Feuil1!$K6<>"";Feuil1!$C6<>"";Feuil1!$K6<=Feuil1!$C6;ANNEE(Feuil1!$K6)<=Feuil2!$A$2;ANNEE(Feuil1!$C6)>=Feuil2!$A$2);SI(ANNEE(Feuil1!$K6)<Feuil2!$A$2;DATE(Feuil2!$A$2;SLF;1);SI(ANNEE(Feuil1!$K6)>Feuil2!$A$2;"";SI(MOIS(Feuil1!$K6)=SLF;Feuil1!$K6;SI(OU(ET(MOIS(Feuil1!$K6)<SLF;MOIS(Feuil1!$C6)>=SLF);ANNEE(Feuil1!$C6)>Feuil2!$A$2);DATE(Feuil2!$A$2;SLF;1);""))));"")

YAPUKA faire une recopie incrémentée jusq'à la colonne Y et jusqu'à la ligne 10 000

Bon j'ai pas figolé hein... Les formats et tout-ça je m'en suis pas occupé je me suis juste occupé de la formule pour que tu comprenne bien que son poids est relativement négligeable, et qu'il faut chercher ailleurs notamment dans tes macros ou se trouvent les résidus indésirables. Car les macros sont effectivement générateurs de zombis invisibles mais qui qui pourraient bien receler une bonne partie de ces Mo indésirables.

Le fichier joint est un vrai Zip qu'il faut dézipper avant d'ouvrir.

autre lien en cas de problème :

A+

Rebonjour Galopin,

galopin01 a écrit :

T'as la tête dure hein !

ça tombe bien moi aussi !

Non c'est pas que j'ai la tête dure mais je suis nouveau en Excel et je suis un peu emmerdé par cette histoire de poids du fichier.

galopin01 a écrit :

La seule chose que j'ai copié collé c'est les en-têtes de colonnes. Toutes les autres formules ont été entrée à la main puis par incrémentation jusqu'à la ligne 10 000 (240 000 cellules environ) Et le tout pèse moins de 3Mo avec les feuilles 1 et 2...

Oui mais tu as enregistré le classeur sous format xlsx qui ne supporte pas les macros donc ça ne m’arrange pas .

Alors la solution sera de l'enregistrer sous format xlsm.

Maintenant le soucis c'est que avec le format xlsm, j'ai des problèmes de code VBA( erreur: Argument ou appel de procédure incorrect). J'ai ouvert un autre sujet pour régler le problème de VBA:

https://forum.excel-pratique.com/excel/argument-ou-appel-de-procedure-incorrect-t34721.html

Tu pourras peut être y jeter un coup d'oeuil.

Et pour finir un GRAND MERCI POUR TA DISPONIBILITÉ.

A te relire.

Saliou

Je n'ai enregistré ce classeur pour te montrer que la formule marche bien.

Il ne te faut pas plus de 2 minutes pour l'adapter à ton vrai classeur :

  • Créer SVF dans le Gestionnaire de Nom
  • Copier la Formule en B6 et incrémenter la cellule dans tous les sens.

Bien sur cela ne crée pas une copie opérationnelle de ton classeur, cela répond juste à ton désir de reformuler.

Je regarde l'autre sujet.

A+

Si si je suis entrain de changer la formule.

A te relire.

Saliou

Bonjour à tous,

J'ai contourné le problème et il est résolu.

Voir : https://forum.excel-pratique.com/post196359.html#p196359

Merci à Galopin.

Saliou.

Rechercher des sujets similaires à "formule tros longue"