VBA - Date dans un tcd en vba vs date dans un tcd manuel
Jerome -
Bonjour la communauté,
J’ai une vba qui fait un TCD, cependant, j'ai une erreur lorsque que je positionne Date Entrée - Venue/Passage dd/mm/yyyy dans colonne : En effet, j’ai remarqué que quand je fais hors vba (donc manuellement) :
Ajouter "Date Entrée - Venue/Passage dd/mm/yyyy", dans colonne ça se divise en "année ; trimestre et Date Entrée - Venue/Passage dd/mm/yyyy,
Mais quand je le fais via le code VBA ça met uniquement Date Entrée - Venue/Passage dd/mm/yyyy dans colonne ce qui génère un tableau avec toutes les date uniquement, ce qui ne me convient pas. Sauriez vous pourquoi et comment corriger cela s’il vous plait ?
Voici le code VBA :
' Ajouter "Date Entrée - Venue/Passage dd/mm/yyyy" aux colonnes
Set PivField = PT.PivotFields("Date Entrée - Venue/Passage dd/mm/yyyy")
PivField.Orientation = xlColumnField
' Désactiver les formats automatiques (comme le trimestre)
On Error Resume Next
PivField.ClearAllFilters
On Error GoTo 0
' Vérifier si le champ est de type date et activer le groupement par années et mois
If IsDate(wsIEP.Range("A2").Value) Then
PivField.PivotItems.Group Start:=True, End:=True, Periods:=Array(False, False, False, True, True) ' Année et Mois
End If
Merciiiiiiiiiiiiii pour votre aide,
Windows / Chrome 129.0.0.0
- VBA - Date dans un tcd en vba vs date dans un tcd manuel
- Tcd excel - Guide
- Ouvrir un fichier .dat - Guide
- Manuel d'utilisation en français - Guide
- Jm date désabonnement ✓ - Forum Consommation & Internet
- Jm date avis - Forum Consommation & Internet
5 réponses
Bonjour,
Peux-tu partager le classeur en anonymisant les données confidentielles
Pour le partager, clique sur :
https://www.cjoint.com/
Clique sur le bouton "parcourir". Choisis le fichier à partager. Dans le bas de la page, clique sur le bouton "Créer le lien cjoint". Copie le lien affiché et colle-le dans ta réponse.
Daniel
Bonjour,
Bien sûr et merci du temps consacré:
En suivi(2) le résultat que j'obtiens en le faisant manuellement en sachant que normalement je retirerais trimestre
Il s'agit de la macro CreerTCDsuivi
https://www.cjoint.com/c/NJqucYq4RK2
Merciiiiiiiiiiiiii beaucoup
Bonjour,
Essaie :
Sub CreerTCDSuivi()
Dim wsSuivi As Worksheet
Dim wsIEP As Worksheet
Dim DerniereLigne As Long
Dim DerniereColonne As Long
Dim PlageTCD As Range
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PivField As PivotField
' Définir les feuilles
Set wsSuivi = Worksheets("suivi")
Set wsIEP = Worksheets("IEP")
' Trouver la dernière ligne et la dernière colonne remplie dans la feuille IEP
DerniereLigne = wsIEP.Cells(wsIEP.Rows.Count, 1).End(xlUp).Row
DerniereColonne = wsIEP.Cells(1, wsIEP.Columns.Count).End(xlToLeft).Column
' Définir la plage de données pour le TCD
Set PlageTCD = wsIEP.Range(wsIEP.Cells(1, 1), wsIEP.Cells(DerniereLigne, DerniereColonne))
' Effacer tout TCD existant sur la feuille "suivi"
wsSuivi.Cells.Clear
' Créer le cache de pivot table
Set PTCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PlageTCD)
' Créer le tableau croisé dynamique dans la cellule A1 de la feuille "suivi"
Set PT = PTCache.CreatePivotTable(TableDestination:=wsSuivi.Cells(1, 1), TableName:="TCDSuivi")
' Ajouter le champ "Gestionnaire" aux lignes et filtrer pour exclure "(vide)"
Set PivField = PT.PivotFields("Gestionnaire")
PivField.Orientation = xlRowField
' Ajouter le champ "Etat de la facturation" aux lignes et appliquer les filtres
Set PivField = PT.PivotFields("Etat de la facturation")
PivField.Orientation = xlRowField
With PivField
.PivotItems("Complètement facturé : pas de nouvelles séances").Visible = False
.PivotItems("Totalement facturé mais bloqué en P").Visible = False
.PivotItems("Reste des séances à facturer").Visible = False
End With
' Ajouter "Date Entrée - Venue/Passage dd/mm/yyyy" aux colonnes
Set PivField = PT.PivotFields("Date Entrée - Venue/Passage dd/mm/yyyy")
PivField.Orientation = xlColumnField
PivField.DataRange.Cells(1).Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, False, False, True)
' Désactiver les formats automatiques (comme le trimestre)
On Error Resume Next
PivField.ClearAllFilters
On Error GoTo 0
' Vérifier si le champ est de type date et activer le groupement par années et mois
If IsDate(wsIEP.Range("A2").Value) Then
PivField.PivotItems.Group Start:=True, End:=True, Periods:=Array(False, False, False, True, True) ' Année et Mois
End If
' Ajouter "IEP - Venue/Passage" dans les valeurs et paramétrer comme Nombre
Set PivField = PT.PivotFields("IEP - Venue/Passage")
PivField.Orientation = xlDataField
PivField.Function = xlCount ' Nombre de "IEP - Venue/Passage"
PivField.NumberFormat = "#,##0" ' Format du nombre
End Sub
J'ai ajouté :
PivField.DataRange.Cells(1).Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, False, False, True)
Après :
Set PivField = PT.PivotFields("Date Entrée - Venue/Passage dd/mm/yyyy")
PivField.Orientation = xlColumnField
Daniel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question