IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Filtrer sur une date un tableau croisé dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Par défaut Filtrer sur une date un tableau croisé dynamique
    Bonjour l'équipe,

    Je bloque sur un problème avec un tableau croisé dynmique. Mon objectif est qu'en activant une macro, celle-ci modifie le filtre des dates en allant rechercher des critères dates dans des cellules. J'ai donc ajouter deux variables Janvier_deb et Janvier_fin par exemple.

    Dans le code qui change le filtre, j'ai remplacé les critères dates placés entre "" par mes deux variables sans les "".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    jan_deb = Sheets("Saisie Contacts").Range("A2").Value
    jan_fin = Sheets("Saisie Contacts").Range("A32").Value
     
     
        ActiveSheet.ChartObjects("GE_Janvier").Activate
            Sheets("GE_Jan").PivotTables("TCD_GE_Janvier").PivotFields("Premier contact"). _
            ClearAllFilters
        Sheets("GE_Jan").PivotTables("TCD_GE_Janvier").PivotFields("Premier contact"). _
            PivotFilters.Add Type:=xlDateBetween, Value1:=jan_deb, Value2:= _
            jan_fin
    Je ne comprends par pourquoi mais quand j'exécute la macro, il bug sur les deux valeurs et me donne l'erreur 1004 "La date tapée n'est pas valide". La cellule qui contient la variable est bien en format date...

    Est-ce que quelqu'un a déjà eu le même problème que moi ?

    Merci pour votre aide précieuse

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    tente, a tout hasard, de dimensionner tes variables en date (au démarrage), et de convertir en cdate() tes variable

  3. #3
    Membre confirmé
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Par défaut
    J'ai déjà ajouté la définition de la variable en commençant mon code par

    Dim jan_deb as date
    Dim jan_fin as date

    en vain... Par contre, t'entends quoi par convertir mes variables en cdate ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    t'es 2 variables la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jan_deb = Sheets("Saisie Contacts").Range("A2").Value
    jan_fin = Sheets("Saisie Contacts").Range("A32").Value
    tu les converti pas CDATE() soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jan_deb = cdate(Sheets("Saisie Contacts").Range("A2").Value)
    jan_fin = cdate(Sheets("Saisie Contacts").Range("A32").Value)

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour à tous,

    Si les dates dans les cellules sont déjà de vraies dates (et pas du texte), la conversion est inutile.
    Pour le savoir, il suffit de changer l'affichage en numérique.
    Si les dates sont converties en nombres, ce sont de vraies dates.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/10/2014, 12h42
  2. Réponses: 2
    Dernier message: 15/09/2011, 16h42
  3. [AC-2007] décimales sur champ dans un tableau croisé dynamique
    Par GILLES_M dans le forum IHM
    Réponses: 2
    Dernier message: 31/10/2010, 17h35
  4. Date dans tableau croisé dynamique
    Par guyanais dans le forum Excel
    Réponses: 6
    Dernier message: 10/02/2009, 21h05
  5. Format date dans tableau croisé dynamique
    Par le_gueux90 dans le forum Excel
    Réponses: 1
    Dernier message: 22/06/2007, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo