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

33source.xlsx (9.15 Ko)
36exemple.xlsx (13.76 Ko)

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
23source-v1.xlsm (26.48 Ko)

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

Ok

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

18kayslife.zip (37.95 Ko)
Rechercher des sujets similaires à "trop formule"