Trop de formule
Bonjour
j'ai un classeur de 100 feuilles de même model (1 feuille par client). 1 feuille contient plus de 1000 cellules a alimenter par une formule de SOMMEPROD qui va chercher les données dans un autre classeur. Donc je me retrouve avec un fichier très lourd surtout a l'ouverture car le calcul automatique est enclenché. j'ai désactiver le calcul automatique et essayer le calcul sur la feuille active (Maj + F9) mais là aussi ca met pret de 4min avant de calculer une feuille. Alors je viens a vous pour voir si quelqu'un a des solution a me proposer ( suis preneur de tous). l'essentiel pour moi est de parvenir a remplir ce fichier et que l'opération de calcul ne me prenne pas une éternité.
merci d'avance
Bonjour
100 Feuilles à 1000 cellules à remplir avec Sommeprod. Impressionnant!
Pour gagner du temps, je ne vois qu'un ordi avec un processeur plus rapide. A moins qu'une Macro puisse faire...
Cordialement
Bonsoir,
Une seule solution : un fichier unique (source) et un TCD (traditionnel ou VBA) puisque tes nombreux fichiers sont des synthèses.
Je me tiens à ta disposition pour t'aider si nécessaire.
Cdlt.
Merci a vous, et toutes mes excuses pour le retard.
Est ce que Jean Eric peut m'aider a obtenir le resultat que je veut avec un macro? Je vous informe deja que je debute en VBA.
Cdlt;
Bonjour,
J'ai proposé de t'aider alors ce que je souhaite de ta part, c'est ton fichier source "réel" avec des données significatives et représentatives (tous les champs de colonnes, avec un nombre de données plus important, si données confidentielles les remplacer par des données fictives). Pas ce que tu nous a envoyé, je pense
Je ne tiens pas à créer un classeur, pas le temps.
Un fichier < 300ko (xlsx ou zippé)
Dans un 1er. temps, nous créerons un TCD manuellement pour ensuite l'automatiser si nécessaire.
Tout dépendra de la structure de ton fichier source.
Cdlt
Salut Jean Eric;
Et merci pour ton aide
En réalité a part la confidentialité des fichiers il y a aussi la taille qui ne me permet nullement de l'envoyer par contre les fichiers joint au post sont une miniature de mes fichiers. Je voudrais pouvoir remplir le fichier Exemple1 en fonction des critères Client, Article, Mois. et l'ensemble de ces données ce trouve dans le fichier source.
J'ai essayer avec sommeprod comme tu l'aurais constater ;mais ce dernier est trop lourd vue le nombfre de formule a utiliser.
Bonjour,
Tes désirs sont souhaités. C'est encore Noël pour certains
Première version : voir fichier et procédure VBA.
A te relire pour plus d'informations.
Cdlt
Option Explicit
Public Sub CréationTCD()
'Ctrl + q pour lancer la procédure
'Déclaration des variables
Dim Plage As Range, PTCache As PivotCache, PT As PivotTable
Dim p As PivotField
'------------------------------------------------------------------------------------
10 With Application
20 .DisplayAlerts = False
30 .ScreenUpdating = False
40 End With
'------------------------------------------------------------------------------------
50 On Error Resume Next
60 ActiveWorkbook.Worksheets("TCD").Delete
70 On Error GoTo 0
80 Set Plage = Range("A1").CurrentRegion
90 Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:=Plage)
100 Worksheets.Add after:=Worksheets(Worksheets.Count)
110 ActiveSheet.Name = "TCD"
120 Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("TCD").Range("A1"), _
TableName:="TCD_1")
'------------------------------------------------------------------------------------
130 With PT
140 With .PivotFields("CLIENT")
150 .Orientation = xlPageField
160 End With
170 With .PivotFields("ARTICLE")
180 .Orientation = xlRowField
190 End With
200 With .PivotFields("MOIS")
210 .Orientation = xlColumnField
220 End With
230 With .PivotFields("QTE")
240 .Orientation = xlDataField
250 .Function = xlSum
260 .Caption = "TOTAL QTE"
270 .NumberFormat = "[Blue]# ##0;[Red](# ##0);;"
280 End With
'Suppression sous-totaux
290 For Each p In .PivotFields
300 If p.Orientation = 1 Then p.Subtotals = Array(False, False, False, False, _
False, False, False, False, False, False, False, False)
310 Next p
'Affichage des totaux lignes et colonnes
320 .ColumnGrand = True
330 .RowGrand = True
'Tri croissant
340 .FieldListSortAscending = True
'Affichage indicateurs d'extraction
350 .ShowDrillIndicators = False
360 End With
'Affichage des champs de lignes et colonnes
370 ActiveWorkbook.ShowPivotTableFieldList = False
380 Set Plage = Nothing: Set PTCache = Nothing: Set PT = Nothing
'------------------------------------------------------------------------------------
390 With Application
400 .DisplayAlerts = True
410 .ScreenUpdating = True
420 End With
End Sub
Merci pour le code. Mais il y a un petit souci, j'ai remarqué qu e tu as un seul fichier dans lequel tu as fait le TCD et en même temps le fichier source. Bon voila en réalité la structure du projet:
Nous avons une base de donnée dans laquelle est enregistrée les ventes journalières
Chaque service a son niveau dispose de différents types de fichier Excel (models) qu'il renseigne a l'aide des états imprimés directement de la base (ce qui explique une grande ressaisi vers ces fichiers excel)
Alors l'objectif du projet est de mettre en place un fichier excel source qui a l'aide d'un fichier de connexion a la base nous pompe toutes l'information dont on aura besoin pour alimenter les différents models des services.
Ceci dit chaque model sera connecter au fichier source par formule ou par macro question de remplir directement ces différents models automatiquement. la mise a jour du fichier sera fait a notre niveau (informatique). Ceux qui utilisent les models ne constaterons que le remplissage de leurs différents fichiers excel.
Donc dans un premier point on doit forcement avoir un fichier source et des models (genre le fichier exemple1).
La vraie solution sera de parvenir a remplir les différentes cellules et non de recréer tout le tableau.
Suis toujours a ta disposition pour d'autres informations.
Re,
Une seule solution : un fichier unique (source) et un TCD (traditionnel ou VBA) puisque tes nombreux fichiers sont des synthèses.
Je me tiens à ta disposition pour t'aider si nécessaire.
J'ai répondu à ta question en me disant qu'il n'était pas utile de multiplier les fichiers(x 100) qu'alors qu'un seul pouvait le permettre avec un TCD. Un double-click sur le total général, permettant par exemple, de créer une feuille pour chaque client . Mais je savais aussi que la demande était sortie de son contexte. Tu l'as confirmé par ton dernier message. Je ne pourrai donc pas t'aider dans ton projet
Si tu es des questions sur les TCDs, n'hésites-pas.
Cdlt
Re,
En réfléchissant, vous avez un moyen pour appréhender votre projet :
Une base de données Access et des exports/imports via Excel. Les soucis de la "source" et des "models" pourraient alors être résolus.
On profite de la puissance d'Access et de la souplesse d'utilisation d'Excel. A méditer 8)
Cdlt
Bonjour,
une tentative...
On peut faire un TCD avec des données d'une autre classeur.
Dans Exemple tu as un TCD unique (feuille à masquer) mis à jour sur le client lorsque tu actives sa feuille. Ses données sont alors copiées sur la feuille client.
Aucune idée du temps que ça prendra avec tes données mais bon, s'il y en a beaucoup il faut bien les charger au départ... Avec le TCD on peut supposer que les échanges seront réduits au minimum.
Si l'utilisateur navigue et revient souvent sur une feuille précédemment activée on peut envisager de mémoriser que la maj a été faite pour ne la faire qu'une fois.
A tester...
Il faudra sans doute modifier la source des données selon le répertoire ou tu enregistres les fichiers.
Les données sont rafraichies par rapport à la base à l'ouverture, à toi de voir s'il faudra rajouter un bouton pour permettre à l'utilisateur de le faire régulièrement.
eric