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 :

[EXCEL] [VBA] Récupérer les données d'un TCD avec "(vide)" comme choix dans la liste déroulante


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [EXCEL] [VBA] Récupérer les données d'un TCD avec "(vide)" comme choix dans la liste déroulante
    Bonjour à tous,

    Voici mon problème :
    J'ai une fichier excel déjà existant qui contient un tableau croisé dynamique. (Vous trouverez en pièce jointe un fichier exemple)

    La colonne "job" est obligatoirement en filtre du TCD.

    Maintenant par vba j'aimerai avoir la "somme de age" pour chaque nom dans le cas où job est égal à "(vide)".
    C'est facile à avoir lorsqu'on le fait à la main, il suffit de cocher le choix (vide) dans la liste déroulante. Mais je dois impérativement le faire par vba.

    J'ai essayé :

    Worksheets("Feuil1").Cells(10,2).Value() = "(vide)" mais cela m'indique une erreur 1004, erreur définie par l'application ou par l'objet.

    Voilà je galère vraiment !! et je dois rendre ce travail pour la fin de la semaine!!
    j'espère que des âmes charitables pourront m'aider.

    Bonne journée,
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Ce que tu dois manipuler c'est le TCD, pas la cellule !

    L'enregistreur de macros n'est pas un gadget : as-tu essayé ?
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je suis vraiment une novice en vba et TCD. (cela signifie que je ne comprends pas bien ta remarque sur l'enregistreur de macro)

    J'ai vu qu'on pouvait créer un TCD à partir de VBA mais je n'ai pas réussi à trouver le moyen me permettant de créer une variable TCD dans VBA qui référencerait un TCD déjà existant pour pouvoir le manipuler. As tu un lien de tutoriel pour cela ?

    (De plus, je dois justement créer une macro pouvant s'adapter à plusieurs TCD différents, de tailles différentes, donc il faut quelque chose de très souple)

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    ok je crois que je tiens un truc !

    Ton idée d'enregistreur de macro était super ! je ne connaissais pas du tout !

    Je viens d'enregistrer une macro et je l'ai retrouvé sur vba donc maintenant je vais voir si je peux l'adapter pour la rendre plus souple ! je reviens vers toi si j'ai un résultat concluant !

    merci beaucoup !!

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Re,

    aurais tu une idée de comment je pourrais récupérer le nom du tcd à partir d'une cellule appartenant à ce tcd ? Exemple si je sais que le TCD est sur la plage A5:E20 ? (enfin vu qu'il est dynamique le E20 peut bouger)

    parce que j'en ai besoin (comme on peut le voir ci dessous) :

    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
    Sub Macro_filtre_vide()
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields( _
            "Support de la Demande")
            .PivotItems("Appel entrant").Visible = False
            .PivotItems("Appel sortant").Visible = False
            .PivotItems("Courrier").Visible = False
            .PivotItems("Email").Visible = False
            .PivotItems("Espace Client").Visible = False
            .PivotItems("Fax").Visible = False
            .PivotItems("Internet").Visible = False
            .PivotItems("Visite").Visible = False
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Support de la Demande").EnableMultiplePageItems = True
    End Sub

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    ok c'est bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub nom_TCD()
     
    Dim tcd As String
     
    Worksheets("Feuil1").Activate
    Worksheets("Feuil1").Range("A8").Select
     
    tcd = ActiveCell.PivotTable.name
    MsgBox ("Le nom du tcd est " & tcd)
     
    End Sub
    Merci pour ton aide !

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Citation Envoyé par alexlw Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Worksheets("Feuil1").Activate
    Worksheets("Feuil1").Range("A8").Select
    tcd = ActiveCell.PivotTable.name
    Bonjour,
    Les selects c'est mal, l'enregistreur de macro t'en met partout mais tu peux t'en passer, ils sont lent et causent souvent des problèmes.
    Ton code s'écrit en une ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tcd = Worksheets("Feuil1").Range("A8").PivotTable.name
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Re

    Cela oblige à sélectionner la cellule...

    Si un seul TCD par feuille utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Nom de la feuille").PivotTables(1)
    Nom à adapter

    Edit : Coucou halaster08
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    A vrai dire j'ai beaucoup de feuilles de calculs et beaucoup de tcd par feuille

    Merci pour votre aide !
    Je passe cette conversation en résolue !

  11. #11
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Re

    Dans ce cas je te conseille de nommer tout tes TCD de façon claire et logique et de ne pas laisser les noms automatiques....

    Notamment si tous ceux ceux tu dois filtrer les vides sont nommés avec un nom portant la même racine, une double boucle règle cela très facilement sans avoir à connaitre le positionnement d'une cellule de chaque TCD, d'autant que les TCD étant à géométrie variable, au fil du temps ce repère peur changer... tandis que les noms sont stables.

    Si tous les TCD concernés alors double boucle sur les index des TCD...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

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

Discussions similaires

  1. Macro excel VBA - récupérer des données dans un fichier excel
    Par perounet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/11/2016, 08h10
  2. Excel/Vba insérer les données d'une feuille excel dans le corps d'un email
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2011, 12h02
  3. Réponses: 2
    Dernier message: 01/07/2010, 10h34
  4. Récupérer les données par ordre alphabétique avec GET
    Par thebarbarius dans le forum Langage
    Réponses: 4
    Dernier message: 04/03/2010, 14h42
  5. comment récupérer les données d'une paramètre avec cplex
    Par debalgo dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 18/06/2008, 12h32

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