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 :

Références Items dans TCD multi-dimension


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
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Par défaut Références Items dans TCD multi-dimension
    Bonjour,

    Sans doute le titre de mon post n'est pas très clair, bien que je l'interprète comme tel.
    Dans le fichier ci-joint (test_Analyse.xlsx) j'ai créé un TCD avec VBA (à partir d'un autre classeur .xlsm).
    Ce TCD comporte 3 champs:
    1. Date
    2. Vente
    3. Montant (Montant TTC dans l'intitulé du champ)


    Pour chaque Date il y a plusieurs Vente dont le Montant est une somme du champ Montant TTC.

    Jusque là tout va bien!

    Avec GetPivotData je suis capable d'accéder directement au montant d'une Vente à une Date donnée.
    Avec PivotItems.Count je suis capable de récupérer le nombre d'Item du champ (ex: Champ Date me donne le nombre dates différentes dans le tableau).

    La dernière opération, que je ne sais comment faire, est de récupérer la liste (en objet par exemple) des Items du champ Vente en fonction d'une valeur du champ Date. Et là je sèche malgré pas mal de recherches sur les forums, mais n'arrivant pas à caractériser précisément ma recherche, je tourne un peu en rond!

    En substance, voici le code qui me permet de filtrer le TCD (c'était une piste) avec la date souhaitée, mais même en essayant d'itérer la même fonction imbriquée avec le champ Vente, ça ne fonctionne pas.
    L'affichage marche très bien, mais je ne sais pas comment exploiter uniquement des données affichées dans le TCD après le filtrage (je ne trouve ça pas trop "élégant" mais c'est la dernière idée que j'ai eu!).
    Au final je voudrais par rapport à une Date, parcourir la liste des Vente assosiées à cette Date et récupérer le Montant de chaque Vente (pour traitement ensuite dans un tableau en mémoire pour comparaison avec un autre tableau similaire).

    Merci d'avance pour votre aide!

    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
     
    Sub test_ExtractionTCD() '(stChampDateRech As String, inChampVente As Integer)
    'Configuration du TCD Ventes/Vente
    Dim shTCDVentes As Worksheet
    Dim ptVentes As PivotTable
    Dim stChampDateRech As String
    Dim inChampVente As Integer
    Dim pi As PivotItem
     
        InitVarApp
        InitVarMois
            'Référence feuille TCD Ventes
        Set shTCDVentes = wbClMois.Worksheets("Ventes")
            'Référence Tableau croisé dynamique Ventes
        Set ptVentes = shTCDVentes.PivotTables("TCDVentes")
     
     
        stChampDateRech = "03/02/2022"
        inChampVente = 18474
     
        With ptVentes.PivotFields("Date")
            For Each pi In ptVentes.PivotFields("Date").PivotItems
                If pi.Value <> "TOTAL" And pi.Value <> stChampDateRech Then
                    .PivotItems(pi.Value).Visible = False
                End If
            Next
        End With
     
    End Sub

  2. #2
    Membre chevronné Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    402
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 402
    Par défaut
    Je ne suis pas sur d'avoir tout compris mais ce code affiche en debug la liste des ventes pour une date donnée
    Si ça correspond à votre recherche, il suffit d'alimenter un tableau au lieu de faire le debug.print
    En espérant que cela vous aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    stChampDateRech = "03/02/2022"
     
    Set oPivotField = ptVentes.PivotFields("Date")
        For Each oPivotItem In oPivotField.PivotItems
            If oPivotItem = stChampDateRech Then
                For Each rngCell In oPivotItem.DataRange.Cells
                    Debug.Print rngCell.Text
                Next rngCell
            End If
        Next oPivotItem

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Par défaut
    Bonjour Dinytro,

    C'est une partie de la réponse.
    En réalité je souhaite obtenir la liste des n° de Vente pour cette même date (couple Vente/Montant).
    Je dirais qu'à partir du moment où je suis capable de récupérer la liste des n°de vente pour une date, l'accès au montant est immédiat avec la méthode GetPivotData.
    Néanmoins si je peut obtenir le couple ce sera beaucoup plus rapide...
    Merci d'avance. Bon week-end!

Discussions similaires

  1. Sélection d'items dans TCD
    Par dbouchy dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 09/03/2015, 19h06
  2. [XL-2007] Gestion des Item dans un TCD en VBA
    Par BAHIRI dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/03/2012, 01h51
  3. str_replace dans un array multi dimension
    Par night_flyers dans le forum Langage
    Réponses: 4
    Dernier message: 16/10/2009, 10h40
  4. [Tableaux] recherche dans un tableau multi dimension
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2007, 14h27
  5. Réponses: 3
    Dernier message: 06/10/2006, 15h46

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