Optimiser le temps de calcul sur un gros fichier

MatMat86

XLDnaute Nouveau
Bonjour,

Je prépare actuellement un classeur permettant d'analyser de manière automatique des données recueillies par un enregistreur: celui-ci me donne un débit par minute, le tout sur un mois (40300 enregistrement donc). Mon premier problème est de compiler ces enregistrements sous forme de données horaires.

Feuille 1:

A / B / C / D

1 Date / De / à / Débit
2 02/04/2010 / 22:35 22:36 / 150
3 02/04/2010 / 22:36 22:35 / 120

Feuille 2:

A / B / C / D

1 Date / De / à / Débit
2 02/04/2010 / 22:00 23:00 / ?
3 02/04/2010 / 23:00 / 00:00 / ?

Pour compléter les "?", j'utilise la formule suivante:

=SOMMEPROD((Feuil1!$A$2:$A$40300=Feuil2!A2)*(Feuil1!$B$2:$B$40300>=Feuil2!B2)*(Feuil1!$B$2:$B$40300<Feuil2!C2)*(Données!$D$2:$D$40300))/60

Le problème est que le calcul sur les 40300 points prend un temps fou, surtout que je dois rendre ce fichier utilisable sur des pc moins puissants que le mien (et sur Excel 2003).

Y'a t'il une solution plus appropriée, ou le nombre de calculs est-il définitivement trop important?


Merci d'avance pour votre aide.

Mat
 
Dernière édition:

MatMat86

XLDnaute Nouveau
Re : Optimiser le temps de calcul sur un gros fichier

Re

Je souhaiterais dans ce classeur, créer une macro qui lance la macro précédente (Formules), puis qui lance le calcul dans tout le classeur mais selon des plages que j'ai sélectionné. J'ai essayé ceci mais ça ne fonctionne pas correctement:

Sub Analyse()
'
' Analyse Macro

'Lancement de la macro Formule

Sheets("Bilan horaire").Select

Formules

'Selection des données

Sheets("Données").Select
Range("G9").Select
Range(Selection, Selection.End(xlDown)).Select
Sheets("Bilan horaire").Select
Range("J9:L36,J42:K52").Select
Sheets("Bilan journalier").Select
Range("G9:H9,B9:C36,G9:I36,K18:N18,K21:M21").Select
Sheets("Semaine 1").Select
Range("A16:A183,E16:F183,I16:K183,P16:S22,P30:S31,P43:S43,P36:S38").Select
Sheets("Semaine 2").Select
Range("A16:A183,E16:F183,I16:K183,P16:S22,P30:S31,P43:S43,P36:S38").Select
Sheets("Semaine 3").Select
Range("A16:A183,E16:F183,I16:K183,P16:S22,P30:S31,P43:S43,P36:S38").Select
Sheets("Semaine 4").Select
Range("A16:A183,E16:F183,I16:K183,P16:S22,P30:S31,P43:S43,P36:S38").Select
Sheets("Surfaces actives").Select
Range("C9:M36").Select
Sheets("Synthèse").Select
Range("C8:D35,G12:K22").Select
Sheets("Jour Type").Select
Range("D9:E1448,G9:J32,I37:J46").Select

'Lancement du calcul

Selection.Calculate

End Sub


Merci de votre aide
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Optimiser le temps de calcul sur un gros fichier

Re

Version avec les calculs sur commande
Note la macro dans thisworkbook pour eviter les calculs a l'ouverture du fichier
Il y aura lieu egalemnt de modifier la macro calcul en fonction du nombre de feuilles Semaine
 

Pièces jointes

  • Debit_test_b.zip
    60.8 KB · Affichages: 58
  • Debit_test_b.zip
    60.8 KB · Affichages: 52
  • Debit_test_b.zip
    60.8 KB · Affichages: 53

MatMat86

XLDnaute Nouveau
Re : Optimiser le temps de calcul sur un gros fichier

Merci beaucoup! J'ai enfin réussi à rendre l'analyse rapide grâce à vous ! (moins de 10 secondes maintenant!)

Une autre petite question: est il possible soit:


- de faire en sorte qu'au moment de l'ouverture, les données soit réparties en deux colonnes au lieu d'une seule?
- de faire en sorte que les données soit séparées en deux feuilles différentes
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Optimiser le temps de calcul sur un gros fichier

Re

S'agit-il de 2 options differentes ou cumulées ?
En tout etat de cause cela risque de poser des problemes pour les formules
Mais comme a prori il y a peu de choses impossibles ,peux-tu (ici le tutoiement est la règle générale) poster un fichier avec des exemples de feuilles Données Avant et Apres
 

MatMat86

XLDnaute Nouveau
Re : Optimiser le temps de calcul sur un gros fichier

En fait Excel 2007 accepte plus de lignes, donc mon problème est résolu.:)
Le fichier en question est un fichier de transition avant de copier les données dans le gros fichier donc pas besoin de le rendre accessible aux versions antérieures.
 
Dernière édition:

Discussions similaires