[bug] Erreur 1004 dans un Tableau Croisé Dynamique

flyjodel

XLDnaute Junior
Bonjour,

j'ai fait un rapport en tableau croisé dynamique, mais je n'arrive plus à actualiser celui-ci (en appuyant sur le point d'exclamation ou avec la macro).

le fichier faisant juste 49 Ko, je l'ai uploadé ici :
http://flyos1.free.fr/im_forum/tcd3PC.zip

Voici le message d'erreur :
Erreur d'exécution '1004':

Le nom du champ de tableau croisé dynamique n'est pas valide. Pour
créer un rapport de tableau croisé dynamique, vous devez utiliser des
données sous forme de liste avec des étiquettes de colonnes. Si vous
changez le nom d'un champ de tableau croisé dynamique, vous devez
taper un nouveau nom pour le champ.


Pouvez-vous m'aider à résoudre ce problème ? je le tourne dans tous les sens mais je ne sais pas ce qui se passe. Peut-être ai-je renommé la feuille qui contient les données (donnees) mais même en revenant au nom d'origine, rien n'y fait.

Merci !

http://imageshack.us
 

Dan

XLDnaute Barbatruc
Re : [bug] Erreur 1004 dans un Tableau Croisé Dynamique

Bonjour,

Normal car tu n'as pas nommer le champ en colonne L et M. L1 et M1 sont en effet vide et comme tu englobes la plage jusque N, le TCD peut pas se construire.

Nomme ces deux colonnes ou supprime les et refais donc ton TCD.

Ensuite utilise cette macro pour réactualiser.
Code:
Sub actualisation()
'Macro par Dan pour flyjodel - le 11/11/06
' Touche de raccourci du clavier: Ctrl+w
Dim PvtTable As PivotTable
With Application
    .ScreenUpdating = False
    .CommandBars("PivotTable").Visible = False
End With
Set PvtTable = ThisWorkbook.Worksheets("Récapitulatif").Range("A3").PivotTable
PvtTable.RefreshTable
Application.ScreenUpdating = True
End Sub

Si pb n'hésite pas

Editon : Application.ScreenUpdating = False --> passé à TRUE dans la macro
 
Dernière édition:

flyjodel

XLDnaute Junior
Re : [bug] Erreur 1004 dans un Tableau Croisé Dynamique

Fa-bu-leux !

je pars manger, un Excel-lent roti de porc façon petites patates et tomates amoureusement mijotées, et en revenant ici, le coeur battant à tout rompre et la panse bien remplie, quelle ne fut ma surprise de voir vos réponses éclairées ! Et lux fuit

En plus, ça marche. Triple buse que je suis, en effectuant d'autres manipulations, j'ai effacé par erreur les deux colonnes manquantes. Mais vos réponses entraînent encore plus de questions :

1. Dan -> pourquoi cette macro (qui fonctionne bien entendu) qui non contente de me parler chinois, me paraît plus compliquée que la commande
Code:
ActiveSheet.PivotTables("tcd1").PivotCache.Refresh
obtenue en enregistrant une macro et en appuyant sur le point d'exclamation ?

2. Pierrot -> pourquoi la valeur True à Application.ScreenUpdating ? J'ai essayé avec Flase, cela semble mettre à jour convenablement le TCD...

3. Dan -> la première partie de la macro (With / End With), bien que je n'y connaisse pas grand chose, permet d'enlever la barre d'outils TCD . Pourquoi ?

4. à tous -> j'ai trouvé sur le site de Cathyastuce ( EXCEL : -- CATHY ASTUCE -- ) comment affecter une macro à un bouton de commande créé par formulaire. Effectivement c'est facile. Par contre, j'aurais aimé fabriquer un bouton avec la boite à outils Contrôles et lui affecter la macro actualisation qui se trouve dans le module 1 ainsi :
Code:
Private Sub CommandButton2_Click()
actualisation()
End Sub
mais évidemment ça ne marche pas. Comment appeler une procédure qui se trouve dans le Module 1 ? ( je me doute que la réponse est évidente, mais pas pour moi à l'instant )

--->>> ah si j'ai trouvé, c'est CALL actualisation , point résolu, tout seul comme un grand. Est-on obligé d'appeler les autres morceaux de code par CALL ? Pourquoi ne peut-on pas exécuter une procédure simplement en tapant son nom ?

Encore une fois merci infiniment pour le temps que vous avez passé à me répondre, et bonne soirée !
Michel
 
Dernière édition:

Dan

XLDnaute Barbatruc
Re : [bug] Erreur 1004 dans un Tableau Croisé Dynamique

Re,

1. J'utilise cette structure car quelques fois elle peut servir pour aller plus loin. Là avec Set je définis le TCD. Mais la tienne fonctionne et est bonne aussi.

2. A la sortie de la macro il faut remettre cette instruction à TRUE. Toi tu ne verras ce qui se passe mais Excel oui. Elle n'intervient pas sur le TCD mais sur le rafraichissement de l'écran. Cela permet aussi d'accélérer le code.

3. Quelques fois la barre d'outils TCD apparaît lors de manipulation (embetant parfois quand tu n'en as pas beoin). Je la désactive donc pour que tout se passe sans que l'utilisateur soit dérangé.

4. Pour fabriquer ton bouton, je te conseille d'utiliser la barre d'outils "formulaire" pour le fabriquer. Les boutons fabriqués de cette manière sont utilisables avec d'autres version d'excel et dans l'environnement MAC aussi. Le contraire ne permettra peut être pas à d'autres de les utiliser. Dans ton fichier, je n'arrivait pas à l'utiliser, j'ai donc du en refaire un par cette méthode.

5. CALL .. : si tu peux supprimer le CALL. De mon coté je le mets pour que la lecture du code soit plus compréhensible et surtout lisible facilement. Là tu n'as pas beaucoup de code mais dans certains cas oui.

Bonne soirée
 

Discussions similaires

Réponses
2
Affichages
229

Statistiques des forums

Discussions
312 555
Messages
2 089 562
Membres
104 214
dernier inscrit
palp