Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 vba - copier-coller des valeurs contenues dans TCD

  • Initiateur de la discussion Initiateur de la discussion douguy
  • 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 !

douguy

XLDnaute Junior
Bonjour à tous

je suis novice de chez novice en VBA et ne parvient pas à créer la macro qui permettrait de copier les valeur contenues dans le TCD dans une autre feuille
les valeurs du TCD changent tous les jours et je voudrais que la BDD importe les valeurs du TCD à la date correspondant à la date du jour

pour l'instant j'en suis à ça et après....
Sub test()
Dim datedujour As Date
Dim premierjour As Date
Dim dernierjour As Date

datedujour = Date
premierjour = DateSerial(Year(Date), Month(Date), 1)
dernierjour = DateSerial(Year(Date), Month(Date) + 12, 1) - 1

'copier les valeurs contenues dans colonne B entre "premierjour" et "dernierjour"
'coller dans BDD MEC groupe en partant de L"premierjour" C "datedujour"

'copier les valeurs contenues dans colonne C entre "premierjour" et "dernierjour"
'coller dans BDD MEC indiv en partant de L"premierjour" C"datedujour"

End Sub

Je pense que c'est basique mais malheureusement je suis nul

un grand merci à ceux qui voudront bien jeter un oeil
 

Pièces jointes

Bonjour

Code:
    With [Sh_TCD].PivotTables("Tableau croisé dynamique5")
        .PivotFields("DATE").ClearLabelFilters
        .PivotFields("DATE").PivotFilters.Add Type:=xlDateThisMonth
       
        premierjour = DateSerial(Year(Date), Month(Date), 1)
        Haut = premierjour - DateSerial(Year(Date), 1, 1) + 2
        Bas = Date - DateSerial(Year(Date), 1, 1) + 2
        Nombre = .DataBodyRange.Rows.Count - 1
        [Sheet3].Range([Sheet3].Cells(Haut, Bas), [Sheet3].Cells(Haut + Nombre - 1, Bas)).Value = .DataBodyRange.Columns(1).Resize(Nombre, 1).Cells.Value
        [Sh_MEC].Range([Sh_MEC].Cells(Haut, Bas), [Sh_MEC].Cells(Haut + Nombre - 1, Bas)).Value = .DataBodyRange.Columns(1).Resize(Nombre, 1).Cells.Value
       
        .PivotFields("DATE").ClearLabelFilters
    End With
 
bonjour Chris et vraiment merci beaucoup

C'est presque ça.

l'export doit aller jusqu'au :
dernierjour = DateSerial(Year(Date), Month(Date) + 12, 1) - 1

soit 12 mois coulissant du coup je pense qu'il faut changer :
Bas = Date - DateSerial(Year(Date), 1, 1) + 2 mais je ne sais pas où 🙁

il faut aussi exporter la colonne C vers l'onglet BDD indiv
du coup je suppose qu'il faut dupliquer cette macro en changeant

[Sheet3].Range([Sheet3].Cells(Haut, Bas), [Sheet3].Cells(Haut + Nombre - 1, Bas)).Value = .DataBodyRange.Columns(1).Resize(Nombre, 1).Cells.Value

en modifiant columns(1) par columns(2) et changer la destination

mais je n'ose pas trop toucher le code

encore merci
 
Re

La macro compète déjà les 2 tableaux mais j'ai oublié de décaler la colonne et cela copiait 2 fois la même

Code:
premierjour = DateSerial(Year(Date), Month(Date), 1)
dernierjour = DateSerial(Year(Date), Month(Date) + 12, 1) - 1

  With [Sh_TCD].PivotTables("Tableau croisé dynamique5")
  .PivotFields("DATE").ClearLabelFilters
  .PivotFields("DATE").PivotFilters.Add Type:=xlDateBetween, Value1:="" & premierjour, Value2:="" & dernierjour
  Haut = premierjour - DateSerial(Year(Date), 1, 1) + 2
  Bas = Date - DateSerial(Year(Date), 1, 1) + 2
  Nombre = .DataBodyRange.Rows.Count - 1
  [Sheet3].Range([Sheet3].Cells(Haut, Bas), [Sheet3].Cells(Haut + Nombre - 1, Bas)).Value = .DataBodyRange.Columns(1).Resize(Nombre, 1).Cells.Value
  [Sh_MEC].Range([Sh_MEC].Cells(Haut, Bas), [Sh_MEC].Cells(Haut + Nombre - 1, Bas)).Value = .DataBodyRange.Columns(2).Resize(Nombre, 1).Cells.Value
   
  .PivotFields("DATE").ClearLabelFilters
  End With

Comme je n'ai pas la source du TCD, je ne peux vérifier : cela s'arrête au 30/12/2017
 
Rebonjour

j'ai une question supplémentaire
je souhaite adapter ce code sur d'autres TCD
la déclaration de la source d'export est sur la ligne suivante :

With [Sh_TCD].PivotTables("Tableau croisé dynamique5")

comment dois-je l'adapter pour d'autre TCD d'un même classeur ?

Par exemple l'onglet s'appelle PivotGROUP, l'autre PivotDATA etc

en fait je ne comprend pas comment le code a compris où il devait chercher les données... 🙁

merci pour vos réponses
 
- 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

Réponses
3
Affichages
300
  • Question Question
Microsoft 365 Code VBA
Réponses
6
Affichages
691
Réponses
6
Affichages
912
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…