Filtrer tcd excel 2010 entre 2 dates erreur 1004 date non valide [Résolu]

- - Dernière réponse :  ykerros - 23 déc. 2012 à 15:13
Bonjour,

J'ai passé des mois sans avoir à poster rien qu'en vous lisant!
Je suis débutant bien que j'arrive à me débrouiller mais là, je suis coincé!

Je souhaite effectuer un filtre sur un tableau croisé dynamique via un userform dans excel 2010.
Dans ce userform, j'ai 2 DTPicker qui déterminent les dates de début et de fin à prendre en compte dans le filtre de mon TCD.

J'ai beau essayé différentes méthodes, je me retrouve toujours avec cette erreur 1004: "la date tapée n'est pas valide"

Sheets("TCDESPQ").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Dte").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Dte").PivotFilters.Add Type:=xlDateBetween, Value1:=DTPicker1.Value, Value2:=DTPicker2.Value
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Produit").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Produit").PivotFilters.Add Type:=xlCaptionEquals, Value1:=ComboBox1.Value
Application.DisplayAlerts = False
Sheets("Graph2").ChartObjects("EvoStockProdQ").Activate
ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path _
& "\Fichiers Pdf" & "Evolution stock produits Graph Q" & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Application.DisplayAlerts = True


Ceci est un de mes essais qui ne marchent pas.
Le seul qui marche mais qui est figé sans mes DTPicker, c'est:

Sheets("TCDESPQ").Activate
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Dte").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Dte").PivotFilters.Add Type:=xlDateBetween, Value1:="18/12/2012", Value2:="21/12/2012"
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Produit").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Produit").PivotFilters.Add Type:=xlCaptionEquals, Value1:=ComboBox1.Value
Application.DisplayAlerts = False
Sheets("Graph2").ChartObjects("EvoStockProdQ").Activate
ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path _
& "\Fichiers Pdf" & "Evolution stock produits Graph Q" & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Application.DisplayAlerts = True


Quelqu'un a t'il une solution sur ce problème de format?

J'ai aussi essayé avec des variables "as date" formatées avec format (DTPicker1.value, "dd/mm/yyyy") mais sans plus de succès...
Afficher la suite 

Votre réponse

1 réponse

0
Merci
Hello,

J'ai continué à chercher la solution en attendant vos lumières et j'ai trouvé la combinaison qui fonctionne (sans vraiment savoir pourquoi des méthodes différentes avec les mêmes éléments ne marchaient pas???).
Voici le code qui fonctionne pour les usagers du forum:
[b]Dim madate1 As Date
Dim madate2 As Date/b
Sheets("TCDESPQ").Activate
[b]madate1 =  DTPicker1.Value
madate2 = DTPicker2.Value/b
MsgBox madate1 & Chr(10) & madate2
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Dte").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Dte").PivotFilters.Add Type:=xlDateBetween,  Value1:=FormatDateTime(madate1, vbShortDate), Value2:=FormatDateTime(madate2, vbShortDate) 
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Produit").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Produit").PivotFilters.Add Type: =xlCaptionEquals, Value1:=ComboBox1.Value
Application.DisplayAlerts = False
Sheets("Graph2").ChartObjects("EvoStockProdQ").Activate
ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path _
& "\Fichiers Pdf" & "Evolution stock produits Graph Q" & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Application.DisplayAlerts = True

Commenter la réponse de ykerros

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.