alimenter un TCD par macro

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
861
Retour