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
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
-
... Plus simple :
PivField.AutoGroup
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 SubJ'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 = xlColumnFieldDaniel
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Trop fortttttttttttt c'est exactement ça :)
Je ne sais comment vous remercier, mais merci ++++++++++++++++++++
Belle journée,