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
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