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

TCE- Periode selectionnable

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

B

banpo

Guest
J'ai une macro qui me permet de n'afficher que les mois d'une periode donnee dans un tableau TCD. Les donnees source contiennent des dates sur plusieurs annees mais , en selectionnant un mois (MM) dans un menu deroulant, le TCD n'affiche que les 12 mois compris entre MM et MM+11.
Le pb est que le TCD affiche aussi un champs pour toutes les donnees avant la periode ("< M") , et un autre champs pour toute les donnees apres le mois M ( ">M+11").
Je voudrais dans la macro supprimer automatiquement ces 2 champs pour ne conserver que la periode (M-11 --> M). Cela parait-il possible ? J'ai essayer pas mal de choses avec Cstr et PivotItem().visible mais rien ne fonctionne....

je joins un fichier pour illustration
Merci pour votre aide
 

Pièces jointes

Re : TCE- Periode selectionnable

Desole , je viens de realiser qu'il y a une erreur dans mon message ci-dessous : il faut lire " conserver que la periode (MM--> MM+11)." a la place "conserver que la periode (M-11 --> M)."
 
Re : TCE- Periode selectionnable

Merci Bebere de ta reponse mais les deux colonnes indesirables sont malheureusement encore presentes. De mon cote, j ai essaye de completer la macro pour 'decocher' ces 2 colonnes dans le tableau dynamique mais je ne progresse pas (partie en rouge ci-dessous). Je n arrive pas a trouver la bonne syntaxe. Vois tu d ou peux venir le pb ? (desole mais ma version d excel est en anglais)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y As Long

If Target.Address = "$B$1" Then
x = Range("'" & ActiveWorkbook.Name & "'!" & "MM").Value
x = CLng(x)
y = DateSerial(Year(x), Month(x) + 12, 1)
Range("B6").Select
Selection.Group Start:=x, End:=y, Periods:=Array(False, False, _
False, False, True, False, False)
End If
LValue = "<" & x
HValue = ">" & y

With ActiveSheet.PivotTables("PivotTable3").PivotFields("Mois")
.PivotItems(LValue).Visible = False
.PivotItems(HValue).Visible = False
End With

End Sub
 
Re : TCE- Periode selectionnable

bonjour Banpo
essaye ce qui suit,chez-moi c'est ok
il faut une chaîne(string) pour lvalue et hvalue

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y As Long, LValue As String, HValue As String

If Target.Address = "$B$1" Then
x = Range("MM").Value
y = DateSerial(Year(x), Month(x) + 12, 1)
x = CLng(x)
Range("B6").Select
Selection.Group Start:=x, End:=y, Periods:=Array(False, False, _
False, False, True, False, False)

LValue = "<"
LValue = LValue & CStr(Format(x, "d/mm/yyyy"))
HValue = ">"
HValue = HValue & CStr(Format(y, "d/mm/yyyy"))

With ActiveSheet.PivotTables("PivotTable3").PivotFields("Mois")
.PivotItems(LValue).Visible = False
.PivotItems(HValue).Visible = False
End With
End If

End Sub
 
Re : TCE- Periode selectionnable

Merci bebere pour ta nouvelle proposition . J ai fait les modifications mais, a l excution de la macro, j ai un bug sur la partie jaune que je n arrive pas a resoudre. Le debugger indique "Run Time error 1004 - Group Method of range class failed". Est-ce liee a la definition de la variable x ? (je ne sais pas si cela a un importance mais je suis sous Excel 2003)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y As Long, LValue As String, HValue As String

If Target.Address = "$B$1" Then
x = Range("MM").Value
y = DateSerial(Year(x), Month(x) + 12, 1)
x = CLng(x)
Range("B6").Select
Selection.Group Start:=x, End:=y, Periods:=Array(False, False, _
False, False, True, False, False)


LValue = "<"
LValue = LValue & CStr(Format(x, "d/mm/yyyy"))
HValue = ">"
HValue = HValue & CStr(Format(y, "d/mm/yyyy"))

With ActiveSheet.PivotTables("PivotTable3").PivotFields ("Mois")
.PivotItems(LValue).Visible = False
.PivotItems(HValue).Visible = False
End With
End If

End Sub
 
Re : TCE- Periode selectionnable

bonjour Banpo
j'ai aussi excel2003 et pas d'erreur
dans le menu outils références n'aurait tu pas une ligne marquée manquant
si oui tu décoches la case
à bientôt
 
Re : TCE- Periode selectionnable

Ca y est, tout fonctionne. Le bug venait du format de la date :dans mon fichier d origine , les dates etaient au format anglais "m/d/yyyy"" .
Encore merci Bebere pour ton aide . Cela m'a permis d'en apprendre un peu plus sur le langage macro et la gestion des dates dans excel.
 
Re : TCE- Periode selectionnable

Banpo j'ai ajouté du code pour avoir une liste sans doublons
elle s'initialise quand tu actives la feuille données brutes
à bientôt
 

Pièces jointes

Re : TCE- Periode selectionnable

Genial ce bout de code ! Cela simplifie grandement la selection du mois d'etude ( j'ai plus de 8,000 lignes dans le fichier couvrant une periode de plusieurs annees... ).

Sans vouloir abuser, je souhaiterais fignoler la mise en forme du document avec les deux ameliorations suivantes:
- Est-il possible que la macro pour supprimer les doublons se deroule lorsque l'on active la feuille "TCD" .C'est vraiment un detail mais cela permettrait d'utiliser directement le menu deroulant sans faire un "allez-retour" sur Data pour la mise a jour de la liste.
- Pour la liste deroulante sans doublons, y a t-il possibilite de supprimer les blancs pour ne conserver que les cellules non vides ?
 
Re : TCE- Periode selectionnable

Whouaa .. impressionnant ce que l'on peut faire en VBA! Je n'ai pas tout compris au code mais ca fonctionne nickel ! je sens qu'il va me falloir un peu de travail pour digerer tout cela.
Merci infiniment Bebere de t'etre penche avec autant de reactivite et d'efficacite sur mes questions. Au risque d'abuser , j'en ai vraiment une toute derniere... pour des raisons d'ergonomie j'ai voulu mettre la liste deroulante sur une feuille separee. J'ai essaye de modifier le code pour que la macro s'excute sur la feuille "TCD" et que , apres l 'execution de la macro, la feuille active soit celle de la liste deroulante ("Parametres" dans le fichier joint). Jusqu'ici, j'enchaine bug sur bug. Cela parait-il faisable?.
Je joins le fichier sur l'etat de mes travaux...
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
21
Affichages
6 K
S
Réponses
9
Affichages
2 K
supervico
S
N
  • Question Question
Réponses
5
Affichages
3 K
H
Réponses
2
Affichages
12 K
HakunaMatata
H
B
Réponses
14
Affichages
2 K
B
Réponses
2
Affichages
3 K
chabin971
C
Réponses
7
Affichages
5 K
bobylecoyote
B
C
Réponses
4
Affichages
1 K
Chaps
C
E
Réponses
7
Affichages
1 K
emmanuel
E
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…