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 :

Sélection valeur TDC par VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut Sélection valeur TDC par VBA
    Bonjour,

    J'ai un problème avec un macro VBA créée et fonctionnant sous excell 97 et qui refuse de fonctionner sous excell 2010.
    le message:

    Erreur d'exécution '1004':
    Impossible de définir la propriété Visible de la classe PivotItem.

    voici la macro que j'ai:

    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 macro2()
    'MAJ_Zn
    '
    'Masquage donnée sur tableau
        ActiveSheet.PivotTables("Tableau croisé dynamique25").PivotFields("DLR").ShowAllItems = True
        ActiveSheet.PivotTables("Tableau croisé dynamique25").PivotFields("DLR").AutoSort xlManual, "DLR"
        Dim p As PivotItem
        Application.ScreenUpdating = False
        With ActiveSheet.PivotTables("Tableau croisé dynamique25").PivotFields("DLR")
           For Each p In .PivotItems
               p.Visible = True
           Next p
            For Each p In .PivotItems
                If p.Value <> "P" Or p.Value <> "(vide)" Then p.Visible = False
           Next p
        End With
        Application.ScreenUpdating = True
        ActiveSheet.PivotTables("Tableau croisé dynamique25").PivotFields("DLR"). _
            ShowAllItems = False
        ActiveSheet.PivotTables("Tableau croisé dynamique25").PivotFields("DLR"). _
            AutoSort xlAscending, "DLR"
            'actualisation du tableau
            ActiveSheet.PivotTables("Tableau croisé dynamique25").RefreshTable
     
    End Sub
    J'ai effectuer différentes recherche sur internet et je ne trouve pas de solution.

    Je ne peux pas transférer le fichier source car il comporte des information stratégique pour mon entreprise.

    Si quelqu'un peut me donner une piste.

    Merci d'avance

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Cela a toujours été un pb de masquer des éléments d'un champ de ligne ou de colonne. Les éléments visibles et masqués ne peuvent se succéder.

    Pour éviter les pb, il faut désactiver le tri automatique sur ce champ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With ActiveSheet.PivotTables("Tableau croisé dynamique25").PivotFields("DLR")
        .Autosort xlManual
    Si on peut encore faire cela avec 2010, je n'ai pas vérifié.

    Si ça ne suffit pas, il faut alors déplacer chaque élément à masquer, et c'est lourd.

    Par ailleurs, quand tu modifies un TCD, il faut toujours commencer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTCD.ManualUpdate = True
    pour accélérer les modifs, à rétablir à False en fin de traitement.

    EN espérant que cela t'aide,

    PGZ

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Tout d'abbord merci pour la rapiditée de ta réponse.

    malheureusement, cela ne marche pas j'ai le message:

    Erreur déxécution '450':

    nombre d'arguments incorrect ou affectation de propriété incorrecte.

    Je vais essayer de creuser cette piste en attendant d'autres solutions.

    Bonsoir,
    Après avoir passé 2h cet aprem à chercher une solution, je sèche pour trouver une solution.
    Je viens de modifié mon fichier source + la macro VBA afin de pouvoir la mettre en pièce jointe (je ne pourrais que demain matin)
    Si quelqu'un à une idée à me proposer pour m'aider car mon fichier est inutilisable dans son intégralité (mon directeur ne connait pas les TDC d'ou la macro de MAJ + filtre).
    Merci encore.

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Si tu as un classeur de démo, c'est parfait pour résoudre le pb.

    Cdlt,

    PGZ

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Bonjour PGZ,
    Tout d'abord merci pour ton aide.
    Ci-joint tu trouveras une version "light" (retrait de colonne et de feuille) de mon classeur + une macro complémentaire me permettant d'afficher le numéro de semaine.
    Cordialement,

    Devaut 35
    Fichiers attachés Fichiers attachés

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    J'ai regardé ton classeur et il y a gros problèmes :
    • Dans la fenêtre de dialogue des champs du TCD, on voit le champ "DLR" dans la zone des champs de lignes et sur la feuille on le voit en colonnes
    • Il y a un filtrage manuel qu'on ne peut déactiver
    • Dans le tableau de données, en colonne DLR, il y a du texte et des dates. Ce n'est pas bon du tout.


    La première chose à faire serait d'avoir un tableau de données homogènes (un seul type de données par champ) et de refaire un TCD qui ressemble à quelque chose. Quand cela sera fait, il redeviendra possible de piloter le TCD.

    Ensuite, je ne comprends pas ce que tu veux faire : si la procédure doit toujours masquer l'élément "P" et l'élément "(vide)", cela peut se faire une bonne fois pour toute à la main et je ne vois pas l'utilité d'une procédure.

    En espérant que cela t'aide,

    PGZ

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Tout d'abord merci pour ta réponse,
    C'est vrai que j'ai peut-être trop allégé le fichier et la macro, le but de ce classeur et de cette macro ne sont donc pas visible.
    La feuille intitulé essai nous sert à voir l'état d'avancement de notre production (j'ai retiré des colonne pour alléger les fichier mais il nous permet d'avoir la charge par machine, semaine, mois ...).
    J'ai également alléger la macro qui nous sert à actualiser le TDC, le But de ce TDC est de permettre de voir les pièces devant partir en zingage en indiquant leur état.
    Pour la colonne DLR, P veut dire prêt au traitement, F: fini, T: en traitement, une date: la date d'expé.
    En réalité, j'ai besoin de laisser seulement les éléments que je veux apparents (les P et Vides). Pour l'exempleque j'ai mis en pièce joint, j'ai modifier les valeurs pour fair des tests.
    Comme indiquer dans un des messages précédent, les utilisateurs de ce classeurs ne sont pas à l'aise avec les TDC et excell, d'où la macro pour actualiser et filtrer.
    J'arrive à obtenir ce que je veux en filtrant manuellement, mais à chaque nouvelle date je dois remettre les filtre à jours et je ne suis pas toujours dispo pour le faire.
    Existe-t-il une solution différente pour obtenir le résultats désiré?

  8. #8
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    A mon avis, une solution propre passe par un nettoyage du TCD et du tableau. Avec un champ qui peut avoir à la fois des valeurs de type String et de type Date, je ne sais rien faire de bon.

    Si tu es obligé de laisser ces dates, un solution peut être de rajouter une colonne au tableau, éventuellement cachée, qui contient une formule qui teste la colonne DLR et renvoie VRAI si "P" ou "".

    Ce nouveau champ doit être utilisé comme champ de page du TCD.

    Dans le paramétrage du champ de ligne DLR, choisir "ne pas afficher les éléments sans valeurs".

    Cela te fait 2 pistes.

    Cordialement,

    PGZ

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Re,

    excuse moi pour ma reponse tardive mais j'était en réunion cet après midi.
    Je vais essayer de passer par une feuille intermédiaire (que je masquerais) me permettant d'obtenir seulement les lignes avec "DLR" vide + P. Puis je lancerai un TDC me permettant de trier les différentes dates et références.
    Due penses-tu de cette solution. Pour moi l'avantage est que cela sera transparent pour les utilisateurs.

    Encore merci pour tes remarques et informations.

    Bonne soirée

    cdt,

    Dévaut 35

  10. #10
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Je préfèrerais de loin supprimer les dates, ou les transformer en texte.

    Ta solution est tout-à-fait envisageable. Même si elle est plus complexe que la solution de la colonne cachée, elle reste bien faisable.

    Cordialement,

    PGZ

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Bonjour,

    Merci, pour ton aide.
    J'ai ajouter une colonne masqué en fin de tableau avec formule me permettant de filtrer des valeurs de même genre (du texte en l'occurence).
    Du coup cela marche sans problèmes, je filtre directement sur tableau dynamique (qui conserve mes filftres même après réactualisation).
    J'ai juste fait un bouton "actualiser" qui remet le TDC à jour.
    Bonne fin de journée et encore merci

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

Discussions similaires

  1. [XL-2010] Sélection champs html par vba
    Par jdadou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/07/2014, 15h46
  2. [AC-2010] Sélection Ligne Combo par VBA
    Par danbo52 dans le forum IHM
    Réponses: 2
    Dernier message: 08/02/2013, 21h30
  3. [AC-2007] Etat - Ouverture - valeur paramètre par VBA
    Par DamKre dans le forum IHM
    Réponses: 6
    Dernier message: 05/07/2012, 08h05
  4. Liste sélectioner la dernière valeur ajoutée par un popup.
    Par guano dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/03/2006, 17h03
  5. Sélection valeur par défaut dans une zone de liste
    Par Cécile154 dans le forum IHM
    Réponses: 2
    Dernier message: 15/02/2005, 18h20

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