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 :

tableaux croisés dynamique et variables de colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 7
    Points
    7
    Par défaut tableaux croisés dynamique et variables de colonnes
    Bonjour à tous,

    je suis desolé de poster un message sur quelque chose qui à peu etre deja été resolé... mais que je n'ai pas reussi à trouver!

    je debute en vba et j'ai dans les mains un programme qui utilise des tableau croisés dynamiques. nous avons deux variables pour faire simple: l'année de naissance (va de 1900 à 1960) et l'année (de 2004 à 2009) on compte le nombre de contrats.

    je doit donc aller cherche dans un tableau croisé dynamique pour chaque année et chaque année de naissance le nombre de contrats. pour cela, nous avons un tableau vide avec en colonne les années et en ligne les années de naissance jusque là, pas tres compliqué me direz vous.

    voici le code...
    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
    Sub Stocks()
     
        Dim a As Integer, b As Integer, l As Integer, c As Integer
        Dim Tot_H As Variant, Tot_F As Variant, An_naiss As Variant, Date_liq As Variant
     
        For l = 3 To 63
            For c = 2 To 9
                An_naiss = Worksheets("Stocks").Cells(l, 1).Value
                Date_liq = Worksheets("Stocks").Cells(2, c).Value
                Sheets("Tab_stocks").Select
                Range("C10").Select
                Tot_H = 0: Tot_F = 0
                For a = 1966 To Date_liq
                    For b = Date_liq To 2007
                    ActiveCell.PivotTable.DataBodyRange ("an_naiss")
                        Tot_H = Tot_H + ActiveCell.PivotTable.GetPivotData("nb_contrats", "CCSEX1", "M", "an_nais", An_naiss, "date_liq", a, "stock", b)
                        Tot_F = Tot_F + ActiveCell.PivotTable.GetPivotData("nb_contrats", "CCSEX1", "F", "an_nais", An_naiss, "date_liq", a, "stock", b)
                    Next b
                Next a
                Worksheets("Stocks").Cells(l, c).Value = Tot_H
                Worksheets("Stocks").Cells(l, c + 9).Value = Tot_F
            Next c
        Next l
     
    End Sub
    le probleme intervien lorsqu'il manque une année en effet, en affinant mes stat, certaines années deviennent non renseignées et là... mon programme ne gere plus cet aspect.

    Je cherche donc à recuperer les valeurs prises par la variable an_naiss pour n'appeler que les années effectivement presentes dans le TCD et ainsi eliminer mon probleme, mais comment proceder?

    avez vous une idée ou mieu encore, un autre solution à mon probleme qui serais plus optimale...

    merci d'avance pour votre aide

    SERRANIC

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Citation Envoyé par serranic Voir le message
    ...
    Je cherche donc à recuperer les valeurs prises par la variable an_naiss pour n'appeler que les années effectivement presentes dans le TCD et ainsi eliminer mon probleme, mais comment proceder?
    ...
    SERRANIC
    Pour pas refaire tout ton code et répondre à cette question précise, tu peux faire une boucle sur un champ d'un TCD, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Pi As PivotItem
     
    For Each Pi In ActiveSheet.PivotTables("LeNomDeTonTCD").PivotFields("LeNomDuChamp").PivotItems
        an_Naiss = Pi
    'Le reste de ta procédure
     
    Next Pi
    Une petite piste pour essayer de te dépatouiller sans quoi pourquoi ne pas directement attaquer la base de donnée au lieu de passer par un TCD ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    bonjour,

    merci de ta reponse, mais j'ai finalement abandonné l'idée de passer par des tableaux croisés dynamiques, j'ai attaqué la base de donnée en dure comme tu me le proposais à la fin de ton message! ca fonctionne nikel!!!

    merci en tous cas

    ++

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

Discussions similaires

  1. tableaux croisés dynamiques avec colonnes éditables
    Par raph_rf dans le forum Conception
    Réponses: 12
    Dernier message: 07/11/2019, 02h53
  2. Réponses: 1
    Dernier message: 23/10/2012, 22h35
  3. Réponses: 1
    Dernier message: 04/10/2009, 12h40
  4. Faire des tableaux croisés dynamique
    Par richard038 dans le forum Bases de données
    Réponses: 6
    Dernier message: 12/04/2006, 22h51
  5. Tableaux croisés dynamiques et graphiques
    Par Marmouz dans le forum Access
    Réponses: 1
    Dernier message: 24/11/2005, 16h38

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