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 une variable pour modifier un TCD [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Utiliser une variable pour modifier un TCD
    Bonjour,

    Voilà, j'aurais besoin d'un peu d'aide pour une histoire de tableaux dynamiques un peu particulière : j'avais déjà demandé de l'aide ici pour quelque chose d'assez semblable : faire en sorte que modifier une ComboBox entraîne un changement de mois sur le TCD.

    Mon axe mois du TCD contient les 12 mois de chaque année. J'ai réussi à bidouiller quelque chose fonctionnant, mais j'aimerais maintenant améliorer cela : en effet, pour l'instant, la solution est très "manuelle" : j'ai mis un Select Case pour choisir le cas entre les 12 mois de l'année.

    Voici le "code" d'un des mois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
    "[Dimension Temps].[Mois]").CurrentPageName = _
    "[Dimension Temps].[Mois].&[201106]"
    J'aimerais savoir comment je pourrais changer de mois via une variable. En gros, j'aimerais qu'il n'y ait plus la référence à un mois précis à la fin de la ligne, mais avoir à la place une valeur modifiable.

    Merci d'avance

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    merci de montrer TOUT le groupe SELECT CASE et la définition des variables que tu y utilises.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Désolé, voici le reste du Select Case. ^^'

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
        Select Case ComboBox1.Value
            Case "Janvier"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201101]"
            Case "Février"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201102]"
            Case "Mars"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201103]"
            Case "Avril"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201104]"
            Case "Mai"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201105]"
            Case "Juin"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201106]"
            Case "Juillet"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201107]"
            Case "Août"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201108]"
            Case "Septembre"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201109]"
            Case "Octobre"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201110]"
            Case "Novembre"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201111]"
            Case "Décembre"
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[201112]"
        End Select

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Ok,

    merci.

    Tu dois absolument conserver cette définition de Combobox.value, ou bien on peut passer sur une valeur (en string) de 01 pour janvier à 12 pour décembre. ?

    Le but étant de tester le mois sur sa valeur en 2 chiffres qui serait utilisée directement dans le code pour donner qqchose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[2011" & combobox1.value & "]"

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Oui, je dois conserver cela, dans l'idéal. Même si ton idée est vraiment très tentante vu comment elle me simplifierait la vie.

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Alors,

    je te suggère la chose suivante, pour faire simple et vite.

    Quand tu récupérères la zone dans ton combobox, tu la convertis en 1 string de 2 chiffres, 01 à 12.

    il y a des tas de moyen pour cela (Select case, .find, Vlookup sur une table, ...)
    Attention à bien récupérer le mois en 2 chiffres, donc dans un string.

    Vite fait, avec select case, cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     Dim Num_Mois as string
     Select Case ComboBox1.Value
            Case "Janvier"
                Num_mois = "01"
    'etc etc etc
            Case "Décembre"
                Num_mois = "12"
        End Select
     
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
                    "[Dimension Temps].[Mois]").CurrentPageName = _
                    "[Dimension Temps].[Mois].&[2011" & Num_Mois & "]"

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Un autre procédé pour récupérer le mois en chiffre à partir du mois en lettres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim m As String
     
    m = Format((DateValue("1 " & Me.ComboBox1.Value)), "mm")
    MsgBox m

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup pour l'aide : je viens de tester, ça marche, et j'ai appliqué plus ou moins la même logique à l'année grâce à une textbox.

    Merci encore de l'aide, rapide et efficace !

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

Discussions similaires

  1. Utiliser une variable pour modifier la taille d'une cellule <td>
    Par morora69 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/06/2010, 17h52
  2. Utiliser une variable pour mettre des étiquettes visible
    Par patate5555 dans le forum VBA Access
    Réponses: 8
    Dernier message: 21/06/2007, 14h51
  3. Réponses: 9
    Dernier message: 16/02/2007, 16h10
  4. Utiliser une variable pour stocker les noms d'objets.
    Par en_gel_ho dans le forum Access
    Réponses: 4
    Dernier message: 03/01/2007, 17h44
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 14h58

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