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 :

Gestion des Item dans un TCD en VBA [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2004
    Messages : 50
    Points : 56
    Points
    56
    Par défaut Gestion des Item dans un TCD en VBA
    Bonjour forum,

    J’effectue régulièrement une extraction d'une liste en format XLS. Les critères de cette extraction sont des dates.

    La procédure (Macro corrigée) que j’utilise fonctionne quel que soit le nombre de lignes de cette liste. Dans le ICD j’active un PivotFields("Lieu") tous les PivotItems sont passés à False en dur.

    Ce qui me pose problème se sont les Item en False et en dur :
    Si l’un de ces est absent dans la liste la procédure s’arrête.
    Comment faire pour éviter ce blocage.

    Merci par avance pour votre conseil.
    Cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
      On Error Resume Next 'un cache misère
        ActiveSheet.PivotTables("PivotTable1").PivotSelect "Lieu[All]", xlLabelOnly, _
            True
        With ActiveSheet.PivotTables("PivotTable1").PivotFields("Lieu")
            .PivotItems("Externe AIR LIQUIDE WELDING SOA").Visible = False
            .PivotItems("Externe ALLIANZ STRASBOURG").Visible = False
            .PivotItems("Externe Auxerre ou Sens ?").Visible = False
            .PivotItems("Externe Bureau administratif de la RMN-GP Versailles"). _
            Visible = False
            .PivotItems("Externe CITE DES SCIENCES").Visible = False
            .PivotItems("Externe Conseil des prud'hommes de Rouen").Visible = False
            .PivotItems("Externe DANONE Eaux France").Visible = False
            .PivotItems( _
         End With
        With ActiveSheet.PivotTables("PivotTable1").PivotFields("Lieu")
            .PivotItems("Externe FRANCE TELECOM").Visible = False
            .PivotItems("Externe GUERBET GONESSE").Visible = False
            .PivotItems("Externe GUERBET VILLEPINTE").Visible = False
            .PivotItems("Externe LOUVRES").Visible = False
            .PivotItems("Externe MATTEL France - Salle Vicky").Visible = False
            .PivotItems("Externe RMNGP").Visible = False
            .PivotItems("Externe SAINT DENIS").Visible = False
            .PivotItems("Externe SANOFI Maisons Alfort").Visible = False
            .PivotItems( _
            .PivotItems("Externe TENCATE GEOSYNTHETICS FRANCE SAS").Visible = False
            .PivotItems("Externe UPS ROISSY CDG").Visible = False
            .PivotItems("Partenaire ATP FORMATION GRENOBLE").Visible = False
            .PivotItems("Partenaire ENI SERVICE RENNES").Visible = False
            .PivotItems("Partenaire EVOLUTION LILLE").Visible = False
            .PivotItems("Partenaire FORMATIC-CENTRE TOURS").Visible = False
            .PivotItems("Partenaire GROUPE ARKESYS LYON").Visible = False
            .PivotItems("Partenaire QUIRIS / TAMIA BREST").Visible = False
        End With

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    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 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    Est-ce qu'il s'agit de tous les items du champ ? Comme il doit y en avoir un de visible, lequel doit-on laisser affiché ? Si tu ne masque que certains items, ajoute :
    avant ton code et :
    à la fin.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre du Club
    Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2004
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    Bonjour Daniel,

    Tous les Items du champ doivent passer en False, je ne souhaite pas répéter la ligne suivante plusieurs fois qu'il y a d'Item dans la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .PivotItems("Externe AIR LIQUIDE WELDING SOA").Visible = False
    Un seul doit s'afficher "Interne Paris" que j'ai activé lors de l'enregistrement de la macro. Le code suivent est implcite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .PivotItems("Interne Paris").Visible = True
    Mon code ci-dessous fonctionne avec ou sans cette ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    On Error Resume Next 'un cache misère
        ActiveSheet.PivotTables("PivotTable1").PivotSelect "Lieu[All]", xlLabelOnly, _
            True
        With ActiveSheet.PivotTables("PivotTable1").PivotFields("Lieu")
            .PivotItems("Interne Paris").Visible = True
            .PivotItems("Externe AIR LIQUIDE WELDING SOA").Visible = False
            .PivotItems("Externe AIR LIQUIDE WELDING SOA").Visible = False
     
     
     
     
            .PivotItems("Partenaire FORMATIC-CENTRE TOURS").Visible = False
            .PivotItems("Partenaire GROUPE ARKESYS LYON").Visible = False
            .PivotItems("Partenaire QUIRIS / TAMIA BREST").Visible = False
        End With
     
    On Error Goto 0

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    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 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Pas testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test2()
        ActiveSheet.PivotTables("PivotTable1").PivotSelect "Lieu[All]", xlLabelOnly, _
            True
        With ActiveSheet.PivotTables("PivotTable1").PivotFields("Lieu")
            For i = 1 To .PivotItems.Count
                If .PivotItems(i).Name = "Interne Paris" Then
                    .PivotItems(i).Visible = True
                Else
                    .PivotItems(i).Visible = False
                End If
            Next i
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre du Club
    Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2004
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    Bonsoir Daniel,

    Je te remercie pour ta solution car elle optimise le code efficacement. Je viens de la tester avec succés.

    Cordialement


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

Discussions similaires

  1. Réponses: 11
    Dernier message: 27/03/2015, 12h51
  2. Code VBA pour filtrer des valeurs dans un tcd
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/09/2013, 10h53
  3. [OL-2010] Gestion des erreurs dans un script VBA
    Par sebastian37 dans le forum Outlook
    Réponses: 1
    Dernier message: 08/07/2011, 20h31
  4. ajouter et supprimer des données dans un tcd avec vba
    Par pscoool dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/12/2009, 18h14
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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