J'ai un fichier d'analyse que j'ai automatisé à l'aide de formules. Ma préoccupation est que lorsque mes données portent sur plus de 20 mille lignes, le temps de traitement du fichier s'allonge considérablement pouvant aller à plus de 15 min et parfois plus. Et ceci bloque de faire autre chose sur Excel
Je voudrais donc que vous m'aidiez à mettre ce fichier sous VBA afin de gagner du temps dans le traitement.
Je joins un exemple du fichier tel qu'il se présente avec les formules de traitement.
Sans faire quoique ce soit dans ton fichier, vu les innombrables formules
Je ne sais pas ce que tu penses pouvoir faire sous VBA !?
tu peux éventuellement parcourir tes lignes, inscrire la formule, puis inscrire la valeur retournée
Sans faire quoique ce soit dans ton fichier, vu les innombrables formules
Je ne sais pas ce que tu penses pouvoir faire sous VBA !?
tu peux éventuellement parcourir tes lignes, inscrire la formule, puis inscrire la valeur retournée
Dans un 1er temps certaines formules peuvent être allégées en s'appuyant sur un TCD.
La macro se limitant à l'actualisation du TCD.
Là je l'ai mise à l'ouverture du fichier, et à l'activation de la feuille TCD. Tu peux compléter/remplacer par l'action d'un bouton.
Ce sont les formules du type :
=SOMME.SI.ENS(Source!$C:$C;Source!$A:$A;$A5;Source!$D:$D;S$2) en A!S:S
et
=SOMME(SOMME.SI.ENS(Source!C:C;Source!A:A;A5;Source!D;{"DA";"HY";"CE"})) en C!S:S
qui deviennent :
VB:
=LIREDONNEESTABCROISDYNAMIQUE("Montant";TCD!$A3;"Clé Commune";$A3;"Type";S$2)
et
=SOMMEPROD(LIREDONNEESTABCROISDYNAMIQUE("Montant";TCD!$A$3;"Clé Commune";$A3;"Type";{"DA";"HY";"CE"}))
Le sommeprod() étant sur de petites matrices, il n'est pas pénalisant.
Je t'ai mis ces formules en fond vert dans A et C. Elles peuvent tirer à droite et vers le bas.
A toi de tester le gain sur un gros fichier en ayant modifié toutes ces formules.
L'autre amélioration éventuelle serait de ne garder les formules qu'en 1ère ligne (collé valeur pour les suivantes), à recopier-coller valeur à chaque actualisation.
Ca te ferait gagner du temps à l'ouverture si besoin, pas vraiment sur les actualisations les calculs étant à faire de toute façon.
eric
J'ai un fichier d'analyse que j'ai automatisé à l'aide de formules. Ma préoccupation est que lorsque mes données portent sur plus de 20 mille lignes, le temps de traitement du fichier s'allonge considérablement pouvant aller à plus de 15 min et parfois plus. Et ceci bloque de faire autre chose sur Excel
Je voudrais donc que vous m'aidiez à mettre ce fichier sous VBA afin de gagner du temps dans le traitement.
Je joins un exemple du fichier tel qu'il se présente avec les formules de traitement.
@momo : Personnellement, je trouve que tu n'as expliqué clairement les tenants et les aboutissants de ton problème (mis à part la lenteur de recalcul vu le nombre de formules).
Je suppose que tu exploites la feuille 'source'. Mais tu ne nous donnes aucune explication à propos des feuilles (A,B,C et D). Il y a des formules certes mais aucune indication des feuilles dans la source.
Merci d'être plus explicite.
Dans un 1er temps certaines formules peuvent être allégées en s'appuyant sur un TCD.
La macro se limitant à l'actualisation du TCD.
Là je l'ai mise à l'ouverture du fichier, et à l'activation de la feuille TCD. Tu peux compléter/remplacer par l'action d'un bouton.
Ce sont les formules du type :
=SOMME.SI.ENS(Source!$C:$C;Source!$A:$A;$A5;Source!$D:$D;S$2) en A!S:S
et
=SOMME(SOMME.SI.ENS(Source!C:C;Source!A:A;A5;Source!D;{"DA";"HY";"CE"})) en C!S:S
qui deviennent :
VB:
=LIREDONNEESTABCROISDYNAMIQUE("Montant";TCD!$A3;"Clé Commune";$A3;"Type";S$2)
et
=SOMMEPROD(LIREDONNEESTABCROISDYNAMIQUE("Montant";TCD!$A$3;"Clé Commune";$A3;"Type";{"DA";"HY";"CE"}))
Le sommeprod() étant sur de petites matrices, il n'est pas pénalisant.
Je t'ai mis ces formules en fond vert dans A et C. Elles peuvent tirer à droite et vers le bas.
A toi de tester le gain sur un gros fichier en ayant modifié toutes ces formules.
L'autre amélioration éventuelle serait de ne garder les formules qu'en 1ère ligne (collé valeur pour les suivantes), à recopier-coller valeur à chaque actualisation.
Ca te ferait gagner du temps à l'ouverture si besoin, pas vraiment sur les actualisations les calculs étant à faire de toute façon.
eric
@momo : Personnellement, je trouve que tu n'as expliqué clairement les tenants et les aboutissants de ton problème (mis à part la lenteur de recalcul vu le nombre de formules).
Je suppose que tu exploites la feuille 'source'. Mais tu ne nous donnes aucune explication à propos des feuilles (A,B,C et D). Il y a des formules certes mais aucune indication des feuilles dans la source.
Merci d'être plus explicite.
Personnellement, je trouve que tu n'as expliqué clairement les tenants et les aboutissants de ton problème (mis à part la lenteur de recalcul vu le nombre de formules).
C'est un fichier d'analyse comportant 4 onglets quasi indépendants.
Le fichier source sert a remplir les colonnes nommés ET à JT
En fait l'analyse se fait sous des conditions que j'ai intégré dans chaque cellule ou on a une formule.
Le challenge c'est de pouvoir optimiser ces formules vu effectivement qu'elles sont nombreuses
C'est un fichier d'analyse comportant 4 onglets quasi indépendants.
Le fichier source sert a remplir les colonnes nommés ET à JT
En fait l'analyse se fait sous des conditions que j'ai intégré dans chaque cellule ou on a une formule.
Le challenge c'est de pouvoir optimiser ces formules vu effectivement qu'elles sont nombreuses
Pas clair du tout.
Mis à part les formules. Ensuite, récupérer les données à partir de la feuille source (pour la feuille C, il n'y a pas d’entêtes de colonne ET à JT).
Tu n'expliques pas comment tu obtiens le début des tableaux
Pas clair du tout.
Mis à part les formules. Ensuite, récupérer les données à partir de la feuille source (pour la feuille C, il n'y a pas d’entêtes de colonne ET à JT).
Tu n'expliques pas comment tu obtiens le début des tableauxRegarde la pièce jointe 1082715
JE te remercie pour la suite que tu donne à ma préoccupation.
En fait partout ou il n'y a pas de formule, ce sont des données qui doivent être ajoutées manuellement.
Dans la fichier originel, les cases sans formules sont remplis sur la base d'une extraction faite d'une base de donnée que j'ajoute dans ces colonnes du fichier pour compléter ainsi l'analyse.
Donc la clé commune et les différents montants issus de l'onglet source sont ajoutés manuellement