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.
Merci de votre aide.
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.