changement de date dans un tableau croisé dynamique

jebbayou

XLDnaute Junior
Bonjour,

J'ai besoin de votre aide afin que je puisse modifier par VB la date de mes tableau croisé en une seule fois.
je m'explique : j'ai un fichier avec plusieurs tableau et je veux pouvoir, après ouverture de fichier, mettre a jour tous les tableau et après pouvoir modifier la date du champ "cri-date fin" de tous les tableau.

En pj un exemple du code que j'ai réussi a faire sauf (dans thisworkbook) que je bloque sur la modification de la date car a chaque fois que je modifie la date il me coche une date sous le format "00/00/0000" qui ne correspond a rien dans la base.

et mon deuxième problème c'est que je n'arrive pas a déclarer la constante date ( je pense que les deux problèmes sont liés)

En pj le détail du code et exemple.

Code:
Option Explicit

Const RegionRangeName As Date = "Valeur"
Const PivotTableName As String = "groupe2"
Const PivotFieldName As String = "CRI - DATE FIN"


Public Sub UpdatePivotFieldFromRange(RangeName As String, FieldName As String, _
PivotTableName As String)

    Dim rng As Range
    Set rng = Application.Range(RangeName)
    
    Dim pt As PivotTable
    Dim Sheet As Worksheet
    For Each Sheet In Application.ActiveWorkbook.Worksheets
        On Error Resume Next
        Set pt = Sheet.PivotTables(PivotTableName)
    Next
    If pt Is Nothing Then GoTo Ex
    
    On Error GoTo Ex
    
    pt.ManualUpdate = True
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    
    Dim Field As PivotField
    Set Field = pt.PivotFields(FieldName)
    Field.ClearAllFilters
    Field.EnableItemSelection = True
    SelectPivotItem Field, rng.Text
    pt.RefreshTable
    
Ex:
    pt.ManualUpdate = False
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    
End Sub

Public Sub SelectPivotItem(Field As PivotField, ItemName As String)
    Dim Item As PivotItem
    For Each Item In Field.PivotItems
        Item.Visible = (Item.Caption = ItemName)
    Next
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Application.Range(RegionRangeName)) _
        Is Nothing Then
            UpdatePivotFieldFromRange _
            RegionRangeName, PivotFieldName, PivotTableName
    End If
End Sub


Merci de votre aide.
 

Pièces jointes

  • test.xlsx
    636.2 KB · Affichages: 64
  • test.xlsx
    636.2 KB · Affichages: 78
  • test.xlsx
    636.2 KB · Affichages: 71

jebbayou

XLDnaute Junior
Re : changement de date dans un tableau croisé dynamique

Bsr et merci pour ta reponse,

Tu peux me donner un exemple stp je ne comprends pas bien ce que tu veux dire.(je suis preneur de toute solution tant que ça fonctionne :)

Merci d'avance.
 

jebbayou

XLDnaute Junior
Re : changement de date dans un tableau croisé dynamique

Bonjour et merci JCGL pour ta réponse.

ça fonctionne bien pour un seul tableau sauf que dans mon cas il me faut changer la date dans tous les TCD de mon fichier avec la même date. je ne sais pas si c'est possible avec ta méthode.

Merci d'avance.
 

chris

XLDnaute Barbatruc
Re : changement de date dans un tableau croisé dynamique

Bonjour
Bise à JCGL;)

On peut lier un même segment à tous les TCD construits sur une même source.

Pour ma part, sans la source dans ton classeur et avec les TCD présents, je n'ai pas trop saisi ce que tu veux synchroniser et c'est pourquoi je n'ai pas proposé d'exemple.
 

Discussions similaires

Réponses
28
Affichages
1 K

Statistiques des forums

Discussions
312 352
Messages
2 087 538
Membres
103 582
dernier inscrit
didinex