XL 2016 Regroupement dates sur TCD

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

  • Liste test.xlsx
    105.7 KB · Affichages: 9
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...

gbinforme

XLDnaute Impliqué
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éé.
 

Aldonanou

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

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
313 198
Messages
2 096 141
Membres
106 505
dernier inscrit
ngomez