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 :

Erreur 1004 illogique [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    stagiaire
    Inscrit en
    Septembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2011
    Messages : 26
    Par défaut Erreur 1004 illogique
    Bonjour,

    J'ai un problème assez épineux avec une macro de tri. En fait, j'ai un fichier qui contient 2 tableaux de données mis à jours automatiquement avec Access. J'ai d'autre part une feuille qui contient deux tableaux croisés dynamiques qui synthétisent les deux tableaux précédents. Le seul filtre appliqué à ces TCD est un filtre sur la date du jour.

    J'ai une macro qui fait les choses suivantes :
    -actualisation des TCD
    -suppression du filtre sur la date de la veille
    -application du filtre de la date du jour

    Problème : un beau jour, cette macro a cessé de fonctionner. Je dis bien un beau jour car elle a du fonctionner au moins deux mois sans sourciller. Malheureusement je n'ai vu aucune idée de ce qu'il a pu advenir...

    Explication du titre (le terme illogique, pour de la programmation, n'est pas franchement adapté, au mieux on peut dire incompréhensible) : j'ai lancé l'enregistreur de macro puis ai sélectionné une date disponible dans les filtres. J'ai tenté de relancer cette macro sans succès (erreur 1004). Ce qui est enregistré avec l'enregistreur de macro ne peut être reproduit ??? Gros doutes ...

    Voici le code utilisé pour mettre à jour le filtre de la date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        With Sheets("TdB").PivotTables("TdbI").PivotFields("Date Inter")
            .ClearAllFilters
            .CurrentPage = Right(Left(StrJour, 5), 2) & "/" & Left(StrJour, 2) & "/" & Right(StrJour, 4)
        End With
     
        With Sheets("TdB").PivotTables("TdbP").PivotFields("Date Inter")
            .ClearAllFilters
            .CurrentPage = Right(Left(StrJour, 5), 2) & "/" & Left(StrJour, 2) & "/" & Right(StrJour, 4)
        End With
    Pas de problèmes du coté droit du "=" du .currentpage, j'ai testé avec du debug.print. Pas de problème avec la méthode ".clearAllFilters" (pas à pas ça roule). J'ai testé la méthode sur un autre tableau croisé dynamique de mon fichier, et l'enregistreur de macro fonctionne cette fois sans broncher.

    Une idée ?? =)

    Merci pour votre aide !

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Ce qui est enregistré avec l'enregistreur de macro ne peut être reproduit ???
    L'enregistreur est la source de plus d'une erreur, par exemple quand il enregistre des références L1C1 (VBA ne connaît que le R1C1) ou des nombres avec des virgules (pour VBA, c'est le séparateur des milliers) etc. Dans ton cas, il serait intéressant de savoir comment tu renseignes la variable "StrJour"

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StrJour = Format(Date, "m/d/yyyy")
    ActiveSheet.PivotTables(1).PivotFields("Date").CurrentPage = StrJour

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    je ne crois pas que ton enregistreur de macro à créé cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CurrentPage = Right(Left(StrJour, 5), 2) & "/" & Left(StrJour, 2) & "/" & Right(StrJour, 4)
    j'aurais plutôt mis une date au format date et pas une chaine de caractére à droite de ton égal..

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour bbil,

    Et pourtant, si tu exécutes cette ligne, avec un champ de page contenant des dates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var = ActiveSheet.PivotTables(1).PivotFields("Date").CurrentPage
    tu récupères une variable string contenant une date au format "m/j/aaaa".

  5. #5
    Membre averti
    Homme Profil pro
    stagiaire
    Inscrit en
    Septembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2011
    Messages : 26
    Par défaut
    Désolé pour la réponse tardive, long weekend !

    Voila ce que me donne l'enregistreur de macro (qui ne se reproduit toujours pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveSheet.PivotTables("TdbI").PivotFields("Date Inter").ClearAllFilters
        ActiveSheet.PivotTables("TdbI").PivotFields("Date Inter").CurrentPage = _
            "16/05/2012"
    J'ai utilisé un string pour ma date du jour (StrJour) car dans l'enregistreur de macro, c'est un string qui est inséré après currentPage.

    J'essai quand même avec la date, sait-on jamais.

    Merci pour votre aide, j'espère qu'on arrivera à bout du problème.

  6. #6
    Membre averti
    Homme Profil pro
    stagiaire
    Inscrit en
    Septembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : stagiaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2011
    Messages : 26
    Par défaut
    J'ai testé avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        With Sheets("TdB").PivotTables("TdbI").PivotFields("Date Inter")
            .ClearAllFilters
            .CurrentPage = Format(Date - 3, "dd/mm/yyyy")
        End With
    Mais ce n'est toujours pas concluant.

    Au fait, je reviens sur ce que j'ai dit dans mon premier post : si je met le même champ dans un autre TCD du fichier, les macro de tri automatique ne marchent pas non plus ! J'ai bien un problème dans l'appel du champ il faut croire... (mais pourquoi ça fonctionnait avant ??? T_T )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb Range: erreur 1004
    Par charlie105 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2006, 17h10
  2. [VB-E] Erreur 1004 dans une boucle For
    Par lycaon dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/11/2006, 22h41
  3. [VBA][EXCEL]Erreur '1004' avec "Application.Run"
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2006, 10h50
  4. [Excel] Erreur 1004 avec un search
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2005, 13h54
  5. Insérer une image : Erreur 1004
    Par dp_favresa dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/10/2005, 14h01

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