alimenter un TCD par macro

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

je cherche à alimenter la source d'un tableau croisé dynamique avec des données que j'ai traitées au préalable.
Avant d'insérer les données, je dois complètement vider cette source, sinon il y aurait confusion/doublon. Puis j'insère les données actualisées.
Mais mon souci vient du fait qu'en vidant la source, je perds le lien avec le tcd : quand je veux actualiser les données, j'ai un message d'erreur même après avoir "réalimenté" cette base
(message annonçant que le tcd doit avoir au moins une ligne)

qu'est-ce qui cloche dans mon code ?

Sub Alimenter_Base()
Workbooks("Tableau.xslx").Activate
Sheets("Source_provisoire").Select
Dim Zeilennummer As Long
Zeilennummer = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:Z" & Zeilennummer).Name = "DATA" ' définition des données à transférer
Application.Goto reference:="DATA"
Selection.Copy
Workbooks("TCD.xlsx").Activate
Sheets("Basis").Select ' onglet où se trouve la source tu tcd
Rows("2:2").Select ' j'insère à partir de la ligne 2 pour préserver les en-têtes
Selection.Insert shift:=xlDown
End Sub

ou est-ce le "vidage" de ma source qui cause le problème ?

Sub Vider_la_source()
Workbooks("TCD.xlsx").Activate
Sheets("Basis").Select
Dim i As Long
Dim last As Long
last = Range("A" & Rows.Count).End(xlUp).Row

For i = last To 2 Step -1 ' si je ne remonte qu'à la 3ème ligne, ça marche mais bien évidemment, j'ai une ligne de trop, erronnée
Rows(i).Delete
Next i
End Sub

Comment se fait-il que ça marche en gardant une ligne et que ça déraille si j'enlève tout (hors en-tête avec nom des colonnes) ?
Je précise que je dois procéder dans cet ordre : vidage puis alimentation car les données sont cumulatives et rien ne les distingue les unes des autres (je sais en alimentant d'abord puis en vidant, je garderais le lien avec le TCD, mais alors salade de chiffres !)




Merci d'avance pour vos lumières
 

chris

XLDnaute Barbatruc
Re : alimenter un TCD par macro

Bonjour

Par définition un TCD sert à synthétiser des données. Il est normal qu'il ne puisse se construire sans ligne de données.

Mais si tu n'actualises pas entre la suppression et l'insertion de lignes, cela ne devrait pas poser de problème.

Comment est définie le source du TCD ?
 

Discussions similaires

Statistiques des forums

Discussions
312 115
Messages
2 085 456
Membres
102 891
dernier inscrit
cocowild