Help sur actualisation de TCD sur un gros fichier

zek

XLDnaute Nouveau
Bonjour à tous

j'ai un soucis d'actualisation de TCD (alors oui j'ai utilisé la fonction recherche, mais je n'ai pas touvé de solution qui me convienne).

Ma démarche est la suivante; à partir d'un applicatif extérieur j'effectue des exports (5 différents) de données en format CSV.



Ces fichiers csv sont ensuite importés dans Excel, via une macro (utilisant la fonction "importer des données").
Chacun de ces fichiers est importés sur une feuille distincte, dans un classeur.

Chacune de ces feuilles distinctes, comprend en plus de ces données, des fonctions de calcul (principalement des "recherchev" dans des tables figurant
dans d'autres feuilles de ce même classeur).

Ces fonctions de recherchev sont implémentées par une macro lors de l'importation des données.

j'obtiens ainsi dans mes 5 feuilles principales 5 "plages de données", dont la plus importante comporte à ce jour +/- 20.000 lignes (et finira l'année vers 45.000). Ces 5 plages de données sont nommées dynamiquement (car mon nombres de lignes augmentent tous les jours).

A partir de ces 5 feuilles sont générées une bonne vingtaine (29) de TCD.

Cette vingtaine de TCD est exploitée par la suite pour donner vie à 5 tableaux de bords, chacun ayant un axe différent:
L'ensemble des acteurs à l'instant T,
L'ensemble des acteurs en cumul depuis le 01/01/10
Un acteur défini à l'instant T
Un acteur défini en cumul depuis le 01/01/10
Une synthèse des données primordiales.

Chacun de ces tableaux de bords ayant besoin de l'actualisation des TCD pour avoir un sens.

Lorsque j'actualise mes TCD , Excel se bloque au bout de 6/7 actualisations.

j'ai essayé:
l'actualisation "manuelle" touche "!" sur chacune des feuilles
la même chose via macro, (activate la feuille & refresh et prend la prochaine)
entrer le code de mise à jour dans "visualiser le code".
this workbook refresh all.
et toujours le même résultat : blocage Excel

La seule façon qui fonctionne étant la suivante : je mets manuellement à jour 5/6 tableaux, j'enregistre, je quitte,
je reprend mon fichier et je recommence...jusqu'au dernier de mes TCD.

Bref je cherche à m'affranchir de ces :mad:manipulations...
Au fait je suis sur Excel 2002.
Merci et pour votre aide!
 

ferdhy

XLDnaute Junior
Re : Help sur actualisation de TCD sur un gros fichier

Bonjour,

as tu essayé dans votre macro la ligne :

ActiveSheet.PivotTables("PivotTablen").PivotCache.Refresh

n represente le numero du TCD sur la feuille.

Ou tu peut nous montrer le code que tu utilise pour rafraichir tes TCD, on vera ce qu'on pourra faire.

ferdhy
 

zek

XLDnaute Nouveau
Re : Help sur actualisation de TCD sur un gros fichier

bonjour,

voici le code utilisé pour la mise jour.

Sub MàJ()

Sheets("Feuil1").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil2").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil3").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil4").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil5").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil6").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil7").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil8").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil9").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil10").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil11").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil12").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil13").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil14").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil15").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil16").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil17").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil18").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil19").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil20").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil21").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil22").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil1BP").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil2BP").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh
Sheets("Feuil3BP").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
Sheets("Feuil4BP").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotCache.Refresh
Sheets("Feuil5BP").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotCache.Refresh
Sheets("Feuil6BP").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotCache.Refresh
Sheets("Feuil7BP").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotCache.Refresh

End Sub
 

Cousinhub

XLDnaute Barbatruc
Re : Help sur actualisation de TCD sur un gros fichier

Bonjour,

Euh, OK, Excel, et ses TCD, sont puissants, mais là, tu risques vite d'arriver à ses limites...

Juste pour essayer, débute et termine ton code comme ceci :

Code:
Sub pourquoi_pas()
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
'....
'code
'....
With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With
End Sub

Parce qu'à priori, tu as "quelques" formules.....

Bref, juste pour voir....

Bon courage

Edit, et si cela fonctionne, essaie avec RefreshAll....
 
G

Guest

Guest
Re : Help sur actualisation de TCD sur un gros fichier

Bonjour,

Difficile de répondre sans la totalité des macros.

Essaie tout de même ceci:

Code:
Sub ActualiserPivots()
 Dim i As Integer
 For i = 1 To 22
    sheest("Feuil" & i).PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
    'Laisser excel terminer ses calculs avant de continuer
    While Application.CalculationState <> xlDone: Loop
 Next
 
 For i = 1 To 7
   Sheets("Feuil" & i & "BP").PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
    'Laisser excel terminer ses calculs avant de continuer
    While Application.CalculationState <> xlDone: Loop
 Next
End Sub

[Edit] Hello Bh², me suis demandé s'il fallait laissé ou pas Calculation en mode automatique.

A+
 
Dernière modification par un modérateur:

Cousinhub

XLDnaute Barbatruc
Re : Help sur actualisation de TCD sur un gros fichier

Re-,

J'ai compris qu'il ne demandait l'actualisation de ses TCD qu'une fois l'importation effectuée

Et comme la mise à jour de son 1er TCD ne peut commencer qu'après les "quelques" milliers de calcul de ses formules, je me suis dit, tout à fait en accord avec moi-même, qu'on n'avait plus besoin de recalculer.....

Mais tout ceci n'est évidemment pas une théorie infaillible....

Cependant, ce fil m'a permis de voir un code que d'une part, je ne connaissais pas, et qui semble remplacer le DoEvents qu'on connaît... (à moins que je ne me trompe, je n'ai pas de fichiers assez conséquents sous la main pour faire des tests....)

Bonne soirée (pour moi, bientôt le "dodo"....)
 

Cousinhub

XLDnaute Barbatruc
Re : Help sur actualisation de TCD sur un gros fichier

Re-,

Par contre, la théorie selon laquelle, les questionneurs posent leurs questions, insistent, "uppent", etc.... et se déconnectent en moins de 6 minutes, celle-là, elle est quasi-infaillible.....

@ +
 
G

Guest

Guest
Re : Help sur actualisation de TCD sur un gros fichier

Re Hubert,

Sans réponse de Zek, nous pouvons toujours suputer:D

CalculationState<>xlDone ne pourra pas dans tous les cas remplacer DoEvents. Simplement attendre que les calculs soient terminés.

En tous cas Bonne nuit cousin;)

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman