Bonjour,
J'ai une base de données externe (Access) volumineuse (3 millions de lignes, 300Mo) comportant des infos sur des animaux, notamment leur poids.
J'ai deux TCD dans un même classeur Excel, connectés à cette même base de données, avec l'option savedata=false pour ne pas sauvegarder le cache dans le classeur et conserver ainsi un classeur excel de taille modeste.
Les deux TCD partagent le même cache, sinon cela provoque des problèmes de saturation mémoire sur certains postes.
Dans le TCD1, les poids sont disposés verticalement, regroupés dans une colonne par tranches de 1kg.
Dans le second TCD2, les poids sont disposés horizontalement mais regroupés 100kg par 100kg.
(Sans entrer dans le détail, cette disposition (verticale dans le TCD1 et horizontale dans le TCD2) me semble difficilement contournable)
C'est une macro qui effectue le regroupement dans le premier TCD, puis celui dans le second TCD (avec des copier-coller pour récupérer le résultat ailleurs).
A chaque fois qu'elle fait le regroupement dans le TCD1 par tranches de 1kg, le même regroupement est fait automatiquement dans le TCD2 (normal: ils partagent le même cache)
Idem pour le regroupement par tranches de 100kg dans le TCD2: il est automatiquement fait également dans le TCD1.
Tout marchait très bien avant que la base externe atteigne la taille actuelle:
Depuis quelque temps, je rencontre sur certains postes des plantages au moment où la macro effectue le groupement sur le TCD1 (tranches de 1 kg).
Je pense que le plantage est dû au fait que ce regroupement sur le TCD1 provoque simultanément un regroupement sur le TCD2, où il génère la création de milliers de colonnes dont je n'ai rien à faire (les tranches de 100Kg me suffiraient), et on sait qu'Excel gère moins bien les TCD avec beaucoup de colonnes que les TCD avec beaucoup de lignes.
Je sais qu'il suffirait que je crée deux connexions distinctes pour régler le problème (avec deux caches) mais les ressources des PC ne me le permettent pas compte tenu de la taille de la base externe.
Je cherche donc une astuce d'un autre ordre.
Pourrais-je ajouter un champ calculé X (ou une "colonne calculée" si cela existe) dans le TCD2, qui serait exactement égale au poids? Ainsi je pourrais continuer de faire le regroupement sur le poids dans le TCD1, mais je le ferais sur X dans le TCD2, et les regroupements n'interféreraient donc pas.
Ou toute autre idée qui me débloquerait...
Merci par avance pour vos lumières...
Pruvieros
J'ai une base de données externe (Access) volumineuse (3 millions de lignes, 300Mo) comportant des infos sur des animaux, notamment leur poids.
J'ai deux TCD dans un même classeur Excel, connectés à cette même base de données, avec l'option savedata=false pour ne pas sauvegarder le cache dans le classeur et conserver ainsi un classeur excel de taille modeste.
Les deux TCD partagent le même cache, sinon cela provoque des problèmes de saturation mémoire sur certains postes.
Dans le TCD1, les poids sont disposés verticalement, regroupés dans une colonne par tranches de 1kg.
Dans le second TCD2, les poids sont disposés horizontalement mais regroupés 100kg par 100kg.
(Sans entrer dans le détail, cette disposition (verticale dans le TCD1 et horizontale dans le TCD2) me semble difficilement contournable)
C'est une macro qui effectue le regroupement dans le premier TCD, puis celui dans le second TCD (avec des copier-coller pour récupérer le résultat ailleurs).
A chaque fois qu'elle fait le regroupement dans le TCD1 par tranches de 1kg, le même regroupement est fait automatiquement dans le TCD2 (normal: ils partagent le même cache)
Idem pour le regroupement par tranches de 100kg dans le TCD2: il est automatiquement fait également dans le TCD1.
Tout marchait très bien avant que la base externe atteigne la taille actuelle:
Depuis quelque temps, je rencontre sur certains postes des plantages au moment où la macro effectue le groupement sur le TCD1 (tranches de 1 kg).
Je pense que le plantage est dû au fait que ce regroupement sur le TCD1 provoque simultanément un regroupement sur le TCD2, où il génère la création de milliers de colonnes dont je n'ai rien à faire (les tranches de 100Kg me suffiraient), et on sait qu'Excel gère moins bien les TCD avec beaucoup de colonnes que les TCD avec beaucoup de lignes.
Je sais qu'il suffirait que je crée deux connexions distinctes pour régler le problème (avec deux caches) mais les ressources des PC ne me le permettent pas compte tenu de la taille de la base externe.
Je cherche donc une astuce d'un autre ordre.
Pourrais-je ajouter un champ calculé X (ou une "colonne calculée" si cela existe) dans le TCD2, qui serait exactement égale au poids? Ainsi je pourrais continuer de faire le regroupement sur le poids dans le TCD1, mais je le ferais sur X dans le TCD2, et les regroupements n'interféreraient donc pas.
Ou toute autre idée qui me débloquerait...
Merci par avance pour vos lumières...
Pruvieros
Pièces jointes
Dernière édition: