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 :

TCD + affichage du mois courant dans un champs de colonne


Sujet :

Macros et VBA Excel

  1. #1
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut TCD + affichage du mois courant dans un champs de colonne
    Bonjour,

    J'ai un TCD dans lequel j'ai 3 colonnes: mois, année et technicien.
    Pour ces colonnes, j'ai différentes valeurs possibles et je voudrai qu'à l'ouverture il ne m'affiche que le mois courant et l'année courante.
    J'ai donc fait une macro que j'ai enregistrée et partant de là j'ai essayé de la modifier pour obtenir le résultat souhaité (merci ullgom ).

    Voilà ce que ça donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ActiveWorkbook.Sheets("interventions_technicien").Select
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("mois_appel")
     
            For x = 1 To .PivotItems.Count - 1
                .PivotItems(x).Visible = False
            Next
     
        .PivotItems(Month(Now)).Visible = False
    Si je remplace x par la valeur d'un mois (par exemple 8 pour aout) dans PivotItems("x").Visible = False , la macro s'exécute bien mais si je laisse x, j'ai le message d'erreur suivant:

    Erreur d'exécution 1004: Impossible de définir la propriété Visible de la classe PivotItem
    Est-ce que quelqu'un saurait m'aider à résoudre ce problème?

    Petite précision, je n'ai quasiment jamais fait de VB de ma vie...

  2. #2
    Membre du Club Avatar de ullgom
    Inscrit en
    Mai 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    Bon j'ai modifié un peu ta macro, cela ne fonctionne toujours pas et je ne vois pas pourquoi mais je pense que tu devrais plutôt t'inspirer de cetter version plutôt que de la précédente, si quelqu'un peut ensuite venir en 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Option Explicit
     
    Sub mois_auto()
    On Error GoTo Erreur_mois_auto
     
        Dim X As Integer
     
        ' Sélection de la feuille contenant le TCD
        ActiveWorkbook.Sheets("interventions_technicien").Select
     
        ' Avec la colonne "mois_appel" du TCD "Tableau croisé dynamique2" de la feuille sélectionnée
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("mois_appel")
     
            ' Je pense que la logique activation désactivation est plus approprié du fait que tu n'as
            'pas le droit de désactiver l'intégralité des propositions dans le TCD
     
            ' Pour x=1 jusqu'à nombre d'élement
            For X = 1 To .PivotItems.Count
                ' Activation de l'élement portant l'indice x
                .PivotItems(X).Visible = True
            Next
     
            ' Pour x=1 jusqu'à nombre d'élement
            For X = 1 To .PivotItems.Count
                ' Si la valeur de l'élement indicé x ne vaut pas mois en cours alors tu désactive.
                If .PivotItems(X).Value <> Month(Now) Then .PivotItems(X).Visible = False
            Next
     
        End With
     
    Exit_mois_auto:
        Exit Sub
     
    Erreur_mois_auto:
        Call MsgBox(Err.Number & " : " & Err.Description, vbCritical, "Erreur")
        GoTo Exit_mois_auto
     
    End Sub
    pour information j'ai ajouté en haut du module

    Cette instruction t'oblige à déclarer toutes les variables que tu utilises dans ton module, c'est parfois très chiant mais au final c'est apréciable d'avoir les déclarations pour se relire.

  3. #3
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    D'accord donc je repars sur ta dernière version ullgom.

    Par contre, j'ai toujours la même erreur:

    1004: Impossible de définir la propriété Visible de la classe PivotItem

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    bonjour,
    Ca tombe bien, je viens de lire que PivotTables ne supporte pas , notament, cette fonction.
    Il faudra trouver un autre moyen.
    A+

  5. #5
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut


    Mais alors pourquoi lorsque j'enregistre une macro sous Excel il utilise justement cette fonction?

  6. #6
    Membre du Club Avatar de ullgom
    Inscrit en
    Mai 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2006
    Messages : 59
    Points : 58
    Points
    58
    Par défaut
    le plus étonnant c'est qu'Excel enregistre la macro, mais il est incapable de l'exécuter ... (je parle biensur de la macro sans modification générée par Excel)

  7. #7
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Etonnant n'est pas le mot que j'emploierai

    En attendant, je sais pas comment je vais pouvoir faire ça autrement...

    Si quelqu'un a une idée...

Discussions similaires

  1. Mois courant dans un champ calculé
    Par Catarssis dans le forum Développement Sharepoint
    Réponses: 6
    Dernier message: 18/04/2013, 11h33
  2. Réponses: 7
    Dernier message: 23/03/2007, 00h11
  3. Ouverture fenetre + affichage d'un texte dans un champ texte
    Par fabien14 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/03/2007, 10h09
  4. [PB 10] Affichage d'une image dans un champ calculé
    Par kheops92 dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 07/07/2006, 11h51
  5. Affichage résultat de requête dans un champ
    Par dj-julio dans le forum WinDev
    Réponses: 1
    Dernier message: 18/01/2006, 10h51

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