Simplification code VBA, sélection date et actualisation tableau croisé

Bonjour à tous,

Je souhaiterai avoir votre aide pour simplifier au mieux un code répétitif et qui sera très long. Je suppose que c'est possible.

Ayant des connaissances limitées j'ai simplement fait mon code en copiant plusieurs fois les parties pour chaque mois.

Le but du code est qu'il actualise les données de tableaux croisés dynamiques en fonction du contenu d'une cellule (cellule qui est sous forme de liste avec tous les mois). Par ailleurs, lorsque je sélectionne "août", excel utilise comme valeur "01/08/1900", je pense que c'est normal mais est-ce que c'est possible d'utiliser le terme "août" ?

Aussi j'utilise un bouton pour actualiser. Je ne sais pas s'il y a moyen d'associer ce code directement à la liste ?

Aussi si c'est possible que s'il n'existe pas de données pour le mois de décembre par exemple, ca affiche un message d'erreur ? ou pour tout autre mois..

Voici le code (pour 3 mois / 12) :

Sub Changement_de_mois()

If Range("C3").Value = "01/07/1900" Then

    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        CurrentPage = "7"
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        CurrentPage = "7"
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        CurrentPage = "7"

    Else

End If

If Range("C3").Value = "01/08/1900" Then

    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        CurrentPage = "8"
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        CurrentPage = "8"
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        CurrentPage = "8"

    Else

End If

If Range("C3").Value = "01/09/1900" Then

    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        CurrentPage = "9"
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        CurrentPage = "9"
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        CurrentPage = "9"

    Else

End If

End Sub

Merci par avance pour tout aide !

Cdlt,

Bonjour, si votre valeur en C3 est reconnue comme une date ; alors

il suffit d'utiliser "Month" pour récupérer votre numéro de mois dans votre variable :

Sub Changement_de_mois()
Dim monmois as long
monmois=Month(Range("C3"))

    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Mois"). _
        CurrentPage = monmois
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Mois"). _
        CurrentPage = monmois
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
        CurrentPage = monmois

End sub

C'est effectivement plus simple comme ça !

Merci de votre réponse !

Rechercher des sujets similaires à "simplification code vba selection date actualisation tableau croise"