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

XL 2016 Regroupement dates sur TCD

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

Aldonanou

XLDnaute Junior
Bonjour,

J'aimerai grouper des dates dans un TCD mais cela ne fonctionne pas.

J'ai déclaré les deux variables DateSeldeb et DateSelFin qui changement en fonction des périodes de l'année.

J'ai essayé plusieurs "regroupement" il doit certainement manquer quelque chose.

Le message d'erreur est Erreur d'exécution 1004 : la méthode Group de la classe range a échoué.
On groupe la sélection
'Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, True, False, False)
Selection.Group Start:=45139, End:=45504, Periods:=Array(False, False, _
False, False, True, False, True)

Le code pour la création du TCD

VB:
On effectue le TCD
    lRow = 1
    ptCount = 1

'   On créé le TCD sur le même onglet
   
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
             "Autorisation", Version:=xlPivotTableVersion15).CreatePivotTable _
              TableDestination:=ActiveSheet.Cells(1, 27), TableName:="AutoAE", _
              DefaultVersion:=xlPivotTableVersion15
             
   
'   On ajoute le champs ligne DATES DE REVISION
    With ActiveSheet.PivotTables("AutoAE").PivotFields("Dates de révision")
        .Orientation = xlRowField
        .Position = 1
    End With
   
'   On ajoute le champ colonne CALCUL DU NOMBRE D'ECHUS
    ActiveSheet.PivotTables("AutoAE").AddDataField ActiveSheet.PivotTables("AutoAE" _
        ).PivotFields("Echus à échoir"), "Nombre de Echus à échoir", xlCount
    With ActiveSheet.PivotTables("AutoAE").PivotFields("Echus à échoir")
        .Orientation = xlPageField
        .Position = 1
    End With
   
   
' On efface les tris
    ActiveSheet.PivotTables("AutoAE").PivotFields("Echus à échoir").ClearAllFilters
   
'   On effectue un tri sur "A Echoir"
    ActiveSheet.PivotTables("AutoAE").PivotFields("Echus à échoir").CurrentPage = _
        "A échoir"
       
'   On effectue un tri sur "TRI"
    With ActiveSheet.PivotTables("AutoAE").PivotFields("Tri")
        .Orientation = xlPageField
        .Position = 1
    End With
   
'   On efface les tris
    ActiveSheet.PivotTables("AutoAE").PivotFields("Tri").ClearAllFilters
   
'   On effectue un tri sur "TRI" valeur à N
    ActiveSheet.PivotTables("AutoAE").PivotFields("Tri").CurrentPage = "N"

' On sélectionne la période selon les valeurs définies DateSelDeb et DateSelFin
    ActiveSheet.PivotTables("AutoAE").PivotFields("Dates de révision").PivotFilters _
        .Add2 Type:=xlDateBetween, Value1:=DateSelDeb, Value2:=DateSelFin

' On groupe la sélection et cela ne fonctionne pas
    'Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
        False, True, False, False)
    Selection.Group Start:=45139, End:=45504, Periods:=Array(False, False, _
        False, False, True, False, True)
   
    Range("AA5").Select
    Selection.Group Start:=DateSelDeb, End:=DateSelFin, Periods:=Array(False, False, _
        False, False, True, False, True)
       
'    Mise en forme des données
    ActiveSheet.PivotTables("AutoAE").RowAxisLayout xlTabularRow
    ActiveSheet.PivotTables("AutoAE").RepeatAllLabels xlRepeatLabels

Et un fichier test.

J'ai laissé le format que je souhaiterai avoir.

Merci d'avance pour l'aide apportée.

Cordialement
 

Pièces jointes

Dernière édition:
Solution
Bonjour,

Merci de votre retour.

Grâce à craig974, j'ai trouvé la solution et réussi à adapter mon programme en conséquence. Pour ceux que cela pourrait intéresser voici la solution qui fonctionne.

La der

VB:
    lRow = 1
    ptCount = 1

'   On créé le TCD sur le même onglet
    
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
             "Autorisation", Version:=xlPivotTableVersion15).CreatePivotTable _
              TableDestination:=ActiveSheet.Cells(1, 27), TableName:="AutoAE", _
              DefaultVersion:=xlPivotTableVersion15
              
' On commence le TCD
 With ActiveSheet.PivotTables("AutoAE").PivotFields("Echus à échoir")
        .Orientation = xlPageField
        .Position = 1...
Bonjour,
Tu n'as pas défini tes variables et DateSelDeb, DateSelFin n'ont pas été initialisées.
Je pense d'ailleurs que ta procédure est sujette à caution car elle ne peux pas être relancée : une fois créé le TCD ne peux plus être recréé.
 
Bonjour,

Merci de votre retour.

Grâce à craig974, j'ai trouvé la solution et réussi à adapter mon programme en conséquence. Pour ceux que cela pourrait intéresser voici la solution qui fonctionne.

La der

VB:
    lRow = 1
    ptCount = 1

'   On créé le TCD sur le même onglet
    
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
             "Autorisation", Version:=xlPivotTableVersion15).CreatePivotTable _
              TableDestination:=ActiveSheet.Cells(1, 27), TableName:="AutoAE", _
              DefaultVersion:=xlPivotTableVersion15
              
' On commence le TCD
 With ActiveSheet.PivotTables("AutoAE").PivotFields("Echus à échoir")
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("AutoAE").PivotFields("Echus à échoir").ClearAllFilters
    ActiveSheet.PivotTables("AutoAE").PivotFields("Echus à échoir").CurrentPage = _
        "A échoir"
        
    With ActiveSheet.PivotTables("AutoAE").PivotFields("Tri")
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("AutoAE").PivotFields("Tri").ClearAllFilters
    ActiveSheet.PivotTables("AutoAE").PivotFields("Tri").CurrentPage = "N"
    
' On effectue le calcul le nombre de dates
    ActiveSheet.PivotTables("AutoAE").AddDataField ActiveSheet.PivotTables("AutoAE" _
        ).PivotFields("Dates de révision"), "Nombre de Dates de révision", xlCount
    With ActiveSheet.PivotTables("AutoAE").PivotFields("Dates de révision")
        .Orientation = xlRowField
        .Position = 1
    End With

' On effectue le regroupement    
    ActiveSheet.PivotTables("AutoAE").PivotFields("Dates de révision").DataRange.Cells(1).Group _
    Start:=True, End:=True, Periods:=Array(False, False, False, False, True, False, True) 
' les deux données à True correspondent au regroupement par mois & année

    ActiveSheet.PivotTables("AutoAE").RowAxisLayout xlOutlineRow
    ActiveSheet.PivotTables("AutoAE").RowAxisLayout xlTabularRow
    ActiveSheet.PivotTables("AutoAE").RepeatAllLabels xlRepeatLabels

Merci

Cordialement
 
- 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
2
Affichages
1 K
Réponses
2
Affichages
2 K
Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…