[VBA] Problème groupement de date

Jarzet

XLDnaute Nouveau
Salut à tous,

Je suis en ce moment entrain de créer des Tableaux Croisés Dynamiques avec des macros, tous se passe au début mais vers la fin du macro il bloque. Cette étape qui bloque permet au tableau de grouper des dates par années puis par mois en montrant le nombre de formulaires remplies par mois.

Voila l'erreur et le code.
Macro1.PNG

Code:
Sub Test2()
    Dim PTcache As PivotCache
    Dim PT1 As PivotTable
    'Dim ptField As PivotField
    'Dim rPTRange As Range
    
    
    Set PTcache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Réponses")
    
    Set PT1 = ActiveSheet.PivotTables.Add(PivotCache:=PTcache, TableDestination:="Tableaux!R6C8", TableName:="TCD_NbFormulairesRempliesMois")
    
    With PT1
        .PivotFields("Horodateur").Orientation = xlRowField
    End With
    
    With PT1
        .PivotFields("Horodateur").Orientation = xlDataField
    End With
    
    PT1.CompactLayoutRowHeader = "Horodateur"
    
    PT1.DataPivotField.PivotItems("Nombre de Horodateur").Caption = "Nombre de formulaires remplies par années puis par mois"
    
    With PT1
        .ColumnGrand = False
        .RowGrand = False
    End With
    
    PT1.PivotFields("Horodateur").PivotFilters.Add Type:=xlValueDoesNotEqual, DataField:=PT1.PivotFields("Nombre de formulaires remplies par années puis par mois"), Value1:=0
    
    With PT1.PivotFields("Horodateur")
        .DataRange.Cells(6, 8).Group Start:=True, End:=True, Periods:=Array(False, False, False, False, True, False, True)
    End With
    
    'Set ptField = PT1.RowFields("Horodateur")
    'Set rPTRange = ptField.DataRange.Cells(6, 8)
    
    'rPTRange.Group Start:=True, End:=True, By:=False, Periods:=Array(False, False, False, False, True, False, True)
    
    PT1.TableStyle2 = "PivotStyleMedium3"
    
    PT1.ShowTableStyleRowStripes = True
    
    PT1.ShowTableStyleColumnStripes = True
    
End Sub

Vous pouvez remarquer que j'ai fait plusieurs tentatives mais j'en ai laissé peu.

Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Re : [VBA] Problème groupement de date

Bonjour.
Il ne faut pas escamoter par flemme inconsciente le conseil de la charte de joindre un fichier, parce qu'en fait ce n'est pas un conseil mais une nécessité absolue et incontournable.
Cela dit, personnellement, quitte à utiliser VBA, je préfère carrément sortir le rapport avec, et pas un TCD qui le produit un peu différemment de ce qu'on voudrait réellement.
Mais il me faudrait un fichier pour tester ça.
 

Jarzet

XLDnaute Nouveau
Re : [VBA] Problème groupement de date

Salut,

Désolé Dranreb pour ne pas avoir inclus le fichier mais c'est la première fois que j'utilise ce site et aussi je suis en stage et je ne peux pas fournir le excel avec toute les données qui sont enregistrées dedans, elles sont confidentielles.

Chris, oui le groupement manuel fonctionne très bien.

Merci de votre réponse :)
 

chris

XLDnaute Barbatruc
Re : [VBA] Problème groupement de date

Bonjour

Cela confirme que le code VBA est en cause.

Il est très facile d'anonymiser des données : remplacer par cherche et remplace telle lettre par telle autre,et limiter à une dizaine de ligne, suffit à vérifier ce qui pose problème.
 

Dranreb

XLDnaute Barbatruc
Re : [VBA] Problème groupement de date

Bonjour.
Il ne s'agit pas de fournir le classeur réel. D'ailleurs souvent il est trop gros et de plus c'est même légalement interdit. Juste un modèle de quelques lignes dans les feuilles impliquées, reproduisant toutefois la vraie structure des données et des résultats souhaités.
 

Jarzet

XLDnaute Nouveau
Re : [VBA] Problème groupement de date

Voila j'ai modifié pour vous l'envoyer, si vous voulez toujours regarder.

Merci
 

Pièces jointes

  • QuestionnaireMacro - Copie.zip
    30.1 KB · Affichages: 37
  • QuestionnaireMacro - Copie.zip
    30.1 KB · Affichages: 35
  • QuestionnaireMacro - Copie.zip
    30.1 KB · Affichages: 42

Dranreb

XLDnaute Barbatruc
Re : [VBA] Problème groupement de date

Comme dit au poste #2:
personnellement, quitte à utiliser VBA, je préfère carrément sortir le rapport avec, et pas un TCD qui le produit un peu différemment de ce qu'on voudrait réellement.
Je n'utilise pas pour ma part les TCD. Il s'en suit que je ne les connais pour ainsi dire pas, voire que les dialogues pour en mettre m'agacent fortement. Vous aussi un peu je suppose puis que vous voudriez passer par VBA pour ne plus avoir à vous en occuper. Vous comprendrez que je peux encore moins déduire le résultat que vous attendez d'un TCD qu'un code qui ne marche pas tente d'installer !
 
Dernière édition:

Jarzet

XLDnaute Nouveau
Re : [VBA] Problème groupement de date

Personnellement je VEUX et DOIS utiliser du TCD et là n'est pas le problème dans le premier poste que j'ai mit.
Non le seul problème qu'il y a c'est qu'une partie du code pour automatiser une partie de la création du TCD (c'est à dire trier par années puis par mois) ne fonctionne pas et m'afficher un message d'erreur quand je l'essais.
Le macro où se trouve ce bout de code se nomme "TCD_NbFormulairesRempliesMois()" et les partie du code sont en commentaire (vert) pour le moment.
Je n'ai aucun problème pour créer des TCD et je n'utilise VBA en aucun cas pour ne plus avoir a m'en occuper mais pour rendre plus accessible les différents TCD que je dois créer avec des systèmes de boutons.
 

chris

XLDnaute Barbatruc
Re : [VBA] Problème groupement de date

Bonjour


Pour groupe sur horodateur il faudrait que le champ existe dans le TCD, ce qui n'est pas le cas.

Si on le place sous le champ centrale en gardant le TCD en disposition compactée, la première date occupe la ligne 2 et la colonne 1 du DataRange (ton cells(6,8) donne l'angle du TCD pas une cellule du DataRange)

Code:
        With PT1.PivotFields("Horodateur")
        .DataRange.Cells(2, 1).Group Start:=True, End:=True, Periods:=Array(False, False, False, False, True, False, True)
        End With

devrait marcher.
 

chris

XLDnaute Barbatruc
Re : [VBA] Problème groupement de date

Re

Quand tu indiques une adresse, dans le datarange il faut considérer que celui-ci a des lignes et colonnes, comme toute plage mais que celles-ci n'ont pas les coordonnées de la feuille Excel : l'ange démarre à cells(1,1) indépendamment de la place du TCD sur la feuille.

Donc si tu as Centrale et Horodateur dans le même colonne (dispo compactée) ils partagent la même plage datarange (entre le titre de la colonne du TCD et la ligne de total) : la cells(1,1) est donc la 1ère valeur de centrale et la cells(2,1) la seconde ligne donc la 1ère date qu'il faut donc grouper.
 

Discussions similaires

Réponses
2
Affichages
117

Statistiques des forums

Discussions
312 215
Messages
2 086 332
Membres
103 188
dernier inscrit
evebar