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 :

Utiliser valeur listbox pour champ TCD


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 49
    Points
    49
    Par défaut Utiliser valeur listbox pour champ TCD
    Bonjour,

    Dans un TCD qui est créé automatiquement à partir d'un bouton et de choix dans un formulaire je souhaiterais sélectionner les éléments du champ de ligne en fonction des éléments choisis dans une listbox.

    Le morceau de code ci-dessous fonctionne très bien pour des éléments fixes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveSheet.PivotTables("Tableau croise").PivotFields("Nom")
            .PivotItems("tartempion").Visible = False
            .PivotItems("trucmuche").Visible = True
    End With
    Ce que je n'arrive pas à faire c'est remplacer tartempion par un élément sélectionné de la listbox. J'ai esayé des choses du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PivotItems(ListeNom.List(2))
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NomTCD=ListeNom.List(2)
    PivotItems(NomTCD)
    mais rien n'y fait.

    Si j'arrivais à le faire pour 1 élément je devrais m'en sortir pour le faire sur tous avec une boucle.

    Merci par avance à ceux qui auraient une idée lumineuse pour ce faire.

    Amicalement

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 49
    Points
    49
    Par défaut Finalement ça fonctionne
    Bonjour,

    En fait le pb provenait des noms utilisés pour remplir la listbox.
    Comme je remplissais déjà par ailleur une combobox avec des noms sans doublon j'ai réutilisé cette liste. Mais comme tous ces noms n'ont pas de données dans l'onglet utilisé pour créer le TCD ça ne fonctionnait pas car je demandais au TCD de valider ou non une donnée inexistante.
    Comem ça pourrait resservir, voici les codes utilisés pour remplir ma listbox sans doublon et utiliser la sélection dans le TCD.

    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
    'Remplit la listbox sans doublon
    ReDim Tableau(1 To 1)
    Tableau(1) = Cells(1, 1)
    For Each c In Sheets("Commandes").Range("Cdes_Nom")
        Present = False
        For i = 1 To UBound(Tableau)
            If Tableau(i) = c Then Present = True
        Next i
        If Not Present Then
            ReDim Preserve Tableau(1 To UBound(Tableau) + 1)
            Tableau(UBound(Tableau)) = c
        End If
        For i = 1 To UBound(Tableau)
            For j = 1 To UBound(Tableau)
                If Tableau(i) < Tableau(j) Then
                    temp = Tableau(i)
                    Tableau(i) = Tableau(j)
                    Tableau(j) = temp
                End If
            Next j
        Next i
    Next c
    Liste_revendeurs.List = Tableau
    'Supprime la ligne vide créée lors du remplissage de la liste
    With Liste_revendeurs
        .RemoveItem (0)
        .AddItem "TOUS", 0
        .Selected(0) = True
        .TopIndex = 0
    End With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'L'élément 0 est "Tous" il est donc inutile de faire un traitement puisque 'toutes les données sont validées par défaut lorsque le
    'champ est ajouté au tcd
    If Liste_revendeurs.Selected(0) = True Then
        Exit Sub
    Else
        For i = 1 To Liste_revendeurs.ListCount - 1
            If Liste_revendeurs.Selected(i) = False Then
                ActiveSheet.PivotTables("Tableau croise").PivotField _
                ("Nom").PivotItems(Liste_revendeurs.List(i)).Visible = False
            End If
        Next i
    End If
    A bientôt

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/12/2014, 15h39
  2. Utiliser valeur InputBox pour un MsgBox
    Par Romanodi13 dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/10/2014, 15h32
  3. [XL-2010] Utiliser un slicer pour des TCD situés sur des feuilles différentes
    Par pedrolapercu dans le forum Excel
    Réponses: 2
    Dernier message: 21/04/2013, 14h03
  4. Réponses: 2
    Dernier message: 08/03/2012, 10h13
  5. valeur d'un champ pour l'utiliser dans une requete
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 08/04/2005, 16h58

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