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 :

Filtrage dans un TCD dont le critère de recherche n'existe pas [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Gestionnaire de paie
    Inscrit en
    Janvier 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestionnaire de paie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 61
    Par défaut Filtrage dans un TCD dont le critère de recherche n'existe pas
    Bonjour,

    J'ai crée une macro pour imprimer des données d'un tableau croisé dynamique en fonction d'un critère (ici, c'est "public"). Le problème que je voudrais résoudre est que si le critère est inexistant, il m'imprime le tableau sans aucune valeur.

    Voici ma macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub IMPRESSIONPUBLIC()
    '
    ' IMPRESSIONPUBLIC Macro
    ' Macro enregistrée le 25/04/2015 par XXXXXXX
    actualisation
          ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Gestionnaire paie").CurrentPage = "(Tous)"
    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Statut"). _
            CurrentPage = "Public"
                    lignefin = [A:E].Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row
            ActiveSheet.PageSetup.PrintArea = Range("a1", Cells(lignefin, 5)).Address
                ActiveWindow.SelectedSheets.PrintPreview
    Merci par avance pour votre aide

    Cdlt

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Tu peux tester les divers ranges des TCD par exemple DataBodyRange : il est facile de savoir que le TCD ne renvoie rien en fonction du nombre de lignes de ce range (qui dépend de la structure du TCD mais tu vérifiés une fois et tu adaptes)

    En espérant que cette propriété existait déjà sur 2000...

  3. #3
    Membre confirmé
    Femme Profil pro
    Gestionnaire de paie
    Inscrit en
    Janvier 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestionnaire de paie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 61
    Par défaut
    Bonjour,

    Merci pour votre réponse mais j'ai du mal à comprendre. Je suis novice en vba. Je me sers des forums pour arriver à en créer. Peux tu me fournir un peu plus de détails ?

    Merci par avance,

    Cdlt

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Si tu es novice, use et abuse de l'aide en ligne d'une part et du mode debug d'autre part.

    Si tu exécutes ton code en pas à pas avec une expression espionne de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PivotTables("Tableau croisé dynamique3").DataBodyRange.rows.count
    tu verras, qu'en fonction de ton filtre, cette expression renvoie une valeur différente et que si ton filtre ne renvoie aucune ligne dans le TCD, la valeur renvoyée par l'expression sera très faible mais comme déjà dit, en fonction de la structure de ton TCD, je ne peux te dire si c'est 1 ligne ou 3...

  5. #5
    Membre confirmé
    Femme Profil pro
    Gestionnaire de paie
    Inscrit en
    Janvier 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestionnaire de paie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 61
    Par défaut
    Bonjour,

    Enfin de compte, j'ai réussi à contourner le problème en créant dans mon tableau d'origine une ligne vide que j'ai masqué avec seulement le statut de renseigné (public). Lorque je lance l'impression comme il trouve une valeur public, l'aperçu avant impression s'ouvre. Il ne bug plus. C'est pas le top mais bon cela solutionne momentanément le problème car je n'ai pas bien compris ce que tu voulais que je fasse

    Merci

    Cdlt

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

Discussions similaires

  1. [XL-2010] Filtrages sucessifs dans un TCD (Tableau Croisé dynamique
    Par Denis_67 dans le forum Excel
    Réponses: 5
    Dernier message: 27/01/2015, 07h50
  2. Réponses: 0
    Dernier message: 05/07/2013, 06h34
  3. Réponses: 11
    Dernier message: 27/03/2011, 15h01
  4. Ecrire dans l'observateur d'évènement quand la source n'existe pas
    Par Tristan Zwingelstein dans le forum Framework .NET
    Réponses: 4
    Dernier message: 02/09/2010, 11h27
  5. [EXCEL 2007] Critères de valeurs dans un TCD
    Par docjo dans le forum Conception
    Réponses: 6
    Dernier message: 06/01/2010, 17h17

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