TCD et Bug en VBA

Domic

XLDnaute Nouveau
Bonsoir à tous,
J'utilise une base de 13 colonnes et entre 1000 et 10000 lignes.

Le TCD est géré entièrement par VBA, en fonction de choix fait sur un USF, le TCD est éffacé et reconstruit à chaque demande de l'utilisateur.

De temps en temps, la macro se bloque avec comme défaut 'Trop de ligne ou trop de colonne', lors de l'ajout d'une colonne dans le TCD

Pour comprendre, je réalise la même analyse en créant manuellement le TCD, et là, aucun problème de ligne ou de colonne. :silly:

Ma question est donc la suivante, d'ou peux provenir ce message erreur.

Merci par avance.

Domic
 

Dan

XLDnaute Barbatruc
Bonsoir,

Si tu as ce message c'est que la manière dont tu veux faire ton TCD demande de gérer trop de données.
Essaie de diviser le TCD en deux si cela est possible, ou remanier le TCD pour le présenter autrement ou enlever les sommes de certains champs de lignes ou colonnes

Si tu peux, place un fichier ici avec données non confidentielles afin que je regarde ce qui se passe.

;)
 
R

rrm

Guest
salut domic,
il faudrait que tu relise la macro de création
du TCD peu-etrequ'il y a une définition fixe du nombre de lignes??!!
auquel casil te faudrait variabiliser ces deux
parametres Nlignes Ncolonnes!
bon courage
 

Domic

XLDnaute Nouveau
Bonsoir à tous,
Merci pour vos pistes.

Après quelques recherches voilà ou j'en suis.

Pour rrm, il n'y as pas de limitation de ligne ou de colonne dans le code de création du TCD.

Pour Dan, sur les 13 colonnes, seule 3 sont utilisé pour réaliser des calculs, toutes les autres sont des critères de selection, et je peux pas les séparer.

Ce que je ne comprend pas c'est pourquoi celà fonctionne en manuel et pas en VBA.

J'ai extrait la base de donnée et uniquement le code VBA pour la création du TCD et là, celà fonctionne, même en mettant 20000 ligne dans la base.

Donc, j'ai peur de comprendre que mon fichier doit saturer les capacités d'excel.

Pour info, le fichier fait 11Mo, il est composé de
- 18 feuilles Excel comprenant au total + de 5000 formules matricielles, et env 30 graphiques
- 17 USF
- 7 modules vba
- et environ 10000 lignes de code.

Comment puis-je vérifier cette hypothèse?

Merci pour vos réponses.

;)

Domic
 

Dan

XLDnaute Barbatruc
Bonsoir,

Je relis tout ton message pour arriver à bien siasir ton pb car constrtuire un TCD par macro n'est pas toujours facile.

11 Mo c'est beaucoup cela et le pb vient peut êre de la mémoire disponible. Tu me dis :
De temps en temps, la macro se bloque avec comme défaut 'Trop de ligne ou trop de colonne', lors de l'ajout d'une colonne dans le TCD
Peux-tu me donner l'instruction sur laquelle la macro se bloque ou même mieux place moi toute le macro ici.

A te lire


;)
 

Domic

XLDnaute Nouveau
Bonsoir Dan, le Forum

Je viens d'essayer 3 fois de te joindre la macro mais j'ai une erreur du serveur 'Internal error'.
j'essai uniquement avec la ligne de code ou le programme se plante :
Code:
        .AddDataField ActiveSheet.PivotTables('TCDR'). _
       PivotFields('Perte'), 'Somme des Pertes', xlSum

En continuant les tests, je constate que si j'ouvre le fichier directement en cliquant sur l'icone, pas de bug, mais si j'utilise une instance excel déjà ouverte car j'ai travaillé sur d'autre fichier, là j'ai de nouveau l'erreur.
Celà me conforte dans l'idée d'une limitation mémoire d'excel car d'après la jauge d'utilisation mémoire, je n'utilise que 48% de ce qui est disponible.

De plus je viens de constater un autre problème lors du filtrage par vba sur les dates,
excel ne prend pas en compte les secondes dans le tcd, seul les minutes sont prises.

As tu déjà vu ce problème?

Merci de ton aide.

Domic
 

Dan

XLDnaute Barbatruc
re,

cela m'a tout l'air d'un pb de mémoire ce que tu me dis.

Malheureusement je ne peux analyser sur base d'une instruction.
Le mieux serait un fichier avec cette macro.

Concernant les secondes, as-tu essayé en sélectionnant les données et en allant dans menu / format / heures ?

;)
 

Domic

XLDnaute Nouveau
Bonsoir à tous,

je joint à ce message une extraction très épurés pour comprendre le problème.

Merci encore pour votre aide.

Domic

[file name=Bug_TCD.zip size=39471]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Bug_TCD.zip[/file]
 

Pièces jointes

  • Bug_TCD.zip
    38.5 KB · Affichages: 52

Dan

XLDnaute Barbatruc
Bonjour,

Bon j'ai bien récupéré ton fichier.

Problème 1 :
Normal que tu aies deux dates puisque comme tu peux le constater, tu as des heures différentes dans tes dates. Là il s'agit d'un pb de format dans ta base de données. Pour y remédier, il te faut avoir uniquement une date (donc sans les heures après).
Problème 2 :
Normal aussi, car le TCD conserve tout. Mais je reviendrai ce soir pour te proposer une macro pour les supprimer.

;)
 

Domic

XLDnaute Nouveau
Bonsoir,

Merci de te pencher sur mon pb.

Concernant le problème de date, je dois absolument garder la totalité de la date, date, heure,minute, seconde.
Normal que tu aies deux dates puisque comme tu peux le constater, tu as des heures différentes dans tes dates. Là il s'agit d'un pb de format dans ta base de données. Pour y remédier, il te faut avoir uniquement une date (donc sans les heures après).

Je ne suis pas tout à fait d'accord avec toi car dans la boucle
Code:
        For i = 1 To .PivotItems.Count - 1
        If CDate(.PivotItems(i)) > date_mini And CDate(.PivotItems(i)) <= date_maxi Then .PivotItems(i).Visible = True
        Next i
l'index i evolue mais le .pivotitems(i) ne passe pas à true, il reste sur la première valeur qui a les dates, heures et minutes identique.

J'avais essayer de modifier les formats de date mais rien n'y fait.

Concernant le pb 2, j'attend de tes nouvelles.

A+

Domic

Message édité par: domic, à: 06/05/2006 20:25
 

Dan

XLDnaute Barbatruc
Bonjour Domic,

Désolé de revenir plus tard mais là hier assez bizarement je n'arrivait pas à placer mon message.

Peux-tu me donner ta version d'excel.

;)

Message édité par: Dan, à: 08/05/2006 13:13
 

Dan

XLDnaute Barbatruc
Bonsoir Domic,

Voici la macro (qui n'est pas de moi... ) que tu dois placer dans ton fichier.

Code:
Sub DeleteunusedItems()
'Macro from B. dalglish
 Dim pt As PivotTable
 Dim ws As Worksheet
 For Each ws In ActiveWorkbook.Worksheets
 For Each pt In ws.PivotTables
 pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
 pt.PivotCache.Refresh
 Next pt
 Next ws
 End Sub

Bon je continue sur ton autre pbet te tiens au courant.

Si pb n'hésite pas

;)

Message édité par: Dan, à: 08/05/2006 20:44
 

Domic

XLDnaute Nouveau
Bonsoir Dan, le forum,
Merci pour ce petit bout de code.

J'ai le regret de te dire que le problème est identique, même blocage au même endroit.

Pourrais tu me dire d'ou il provient STP, je regarderai les informations relatives au TCD.

Encore merci

A+

Domic
 

Dan

XLDnaute Barbatruc
re,

Domic la macro que je t'ai postée ne résouds que ton pb d'items qui ne sont plus inclus dans ta base de données et que ton TCD reprend toujours.

Pour le pb de tes dates je dois encore regarder de plus près.

;)
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 450
Membres
103 546
dernier inscrit
mohamed tano