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 :

Récupération d'une valeur dans le résultat d'une combinaision de fonction filter+choose [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut Récupération d'une valeur dans le résultat d'une combinaision de fonction filter+choose
    Bonjour la communauté,

    Quelqu'un pourrait-il me venir en aide ?

    Nom : IMG1.png
Affichages : 257
Taille : 6,8 Ko

    Ceci est le résultat d'une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FILTER(CHOOSE({1\2\3\4\5\6};grades_FullDen!J:J;grades_FullDen!F:F;grades_FullDen!G:G;grades_FullDen!A:A;grades_FullDen!H:H;grades_FullDen!I:I);grades_FullDen!B:B =A4)

    Voici la formule que j'essaie et qui me signale une array vide. GrdVsFct!E4 (Activesheeet) correspondant à grades_FullDen!A:A dans le sheet grades_FullDen :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FILTER(CHOOSE({1\2\3};SPX_GOV_HR_VIEW[DG];SPX_GOV_HR_VIEW[Fonctions.FCT_FR];SPX_GOV_HR_VIEW[DG]);SPX_GOV_HR_VIEW[GRADECDORD] = GrdVsFct!E4)

    En résumé je voudrais récupérér la ou les valeurs de grades_FullDen!A:A et effectuer un filtre sur ces/cette valeur.
    Faut-il passer par VBA pour cela?

    Merci pour votre collaboration.

    Habiler

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 504
    Par défaut
    Salut,

    Selon la façon dont tu as organisé tes données, une solution Power Query peut être envisageable.
    Peux-tu poster un classeur avec des données exemple ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut
    Bonjour
    Je ne parviens pas à diminuer le volune.
    Mon fichier a été lavé de la majotité de tables et les queries.
    J'en suis tj à 9000K et 7000 zippé. Je n'ai que 3 feuilles avec peu de données. Peut$être dans le data model mais ne trouve plus le moyen d'y accéder

    Habiler

  4. #4
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 276
    Par défaut
    Bonjour

    Est ce que la formule suivante renvoie des données ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FILTER(SPX_GOV_HR_VIEW;SPX_GOV_HR_VIEW[GRADECDORD] = GrdVsFct!E4)
    ?

    sinon pour renvoyer les colonnes 2, 8 et 15 de la table filtrée vous avez CHOISIRCOLS (CHOOSECOLS en anglais)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FILTRE(CHOISIRCOLS(SPX_GOV_HR_VIEW;2;8;15);SPX_GOV_HR_VIEW[GRADECDORD] = GrdVsFct!E4)
    et pour éviter le CHOISIR vous avez maintenant ASSEMB.H (HSTACK en anglais)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FILTRE(ASSEMB.H(Col2;Col8;Col15);ColTest="Test")
    Stéphane

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut
    La formule me donne une erreur #CALC!.
    Pour excel la cellule E4 est vide
    Les deux fonctions (HSTACK et CHOOSECOLS) ne sont pas encore disponible sur la version (professionnelle donc pas libre de la màj) que j'utilise.
    Dans un des essais précédents j'avais trouver la solution mais ne parviens pas à la retrouver.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut
    Bonjour,

    jJ'ai remplacé la formule avec la fonction filtre par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
        Sheets("Grades_FullDen").Range("A1:AM200").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Sheets("GrdVsFct").Range("A4:A5"), _
            CopyToRange:=Range("GrdVsFct!Extract"), Unique:=False
    End Sub
    Cela fonctionne/

    Mais je voudrais que lorsque la cellule A5 change le code ci dessus s'adapte par la même occcasion. J'ai donc modifié le code mais rien ne se passe.

    Je ne vois pas ou se trouve le problème ?
    Pouvez-vous m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$5" Then
        Sheets("Grades_FullDen").Range("A1:AM200").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Sheets("GrdVsFct").Range("A4:A5"), _
            CopyToRange:=Range("GrdVsFct!Extract"), Unique:=False
            End If
    End Sub

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut
    Voilà j'ai réecrit mes codes pour en arriver au code ci-dessous.
    Maintenant il me donne une erreur 1004 - Select method of range class Failed.
    Je cherche à filtrer dans la plage results du sheet "GrdVsFct" toutes les données du sheet "test" correpondant aux valeurs reprise dans la plage criteria du sheet "GrdVsFct"
    Maintenant il me donne une erreur 1004 - Select method of range class Failed au niveau de "wsData.Range("T1:V2000").Select"
    criteria = "=GrdVsFct!$C$4:$C$11"
    results = "=GrdVsFct!$I$13:$W$32"

    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
    Public Sub ftt()
    Dim wsData As Worksheet
    Set wsData = ThisWorkbook.Worksheets("test")
    wsData.Range("T1:V2000").Select
     
    'Apply the filter to the data:
     
    wsData.Range("T1:V2000").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Range("criteria"), _
    CopyToRange:=Range("results"), _
    Unique:=True
     
    ActiveSheet.Range("criteria").ClearContents
    ActiveSheet.Range("results").ClearContents
     
    End Sub

  8. #8
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Slt, tu peux avoir cette erreur si la feuille que tu .select n'est pas la feuille active. Ajoute wsData.Activate avant la ligne .select

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut Advanced filter - Choix de colonnes et critères multiples
    Bonjour à tous,

    Mon code ci-dessous fonctionne mais il m'affiche toutes les colonnes du Sheet "fonction alors que je ne voudrais l'affichage que de la 1er, 3eme et 4eme col.
    Est-ce possible avec cette formule?

    Mon soucis est également que dans une autre sheet je voudrais la même formule (adaptée) mais avec criteriaRange les cellules[B3b4:b6)]
    Dans ce dernier cas mon but est de chercher dans un sheet "grades" tous les grades répondant aux critères (B4:B6) et les copier dans ThisWorkbook.Worksheets("GrdVsFct"). La colonne de critère étant C2:c200.

    Merci d'avance

    Habiler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub copyIDsQF()
     
        ThisWorkbook.Worksheets("GrdVsFct").Range("B7").ClearContents
     
     
             ThisWorkbook.Worksheets("Fonctions").[c1].CurrentRegion.AdvancedFilter _
             Action:=xlFilterCopy, _
             CopyToRange:=[B10], _
             CriteriaRange:=[A1:A2]
     
       ' ThisWorkbook.Worksheets("GrdVsFct").Range("B8").Delete Shift:=xlShiftUp
     
    End Sub

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 161
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Mon code ci-dessous fonctionne mais il m'affiche toutes les colonnes du Sheet "fonction alors que je ne voudrais l'affichage que de la 1er, 3eme et 4eme col.
    Il faut que l'argument CopyToRange contienne la plage de cellules à copier avec comme valeur le titre des colonnes.

    Pour en savoir, je vous invite à lire mon tutoriel sur ce sujet Les filtres avancés ou élaborés dans Excel et tout particulièrement le chapitre VII-B. Exportation partielle des données filtrées
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [PowerShell] Tester la présence d'une valeur dans les résultats d'une requête sql
    Par patic dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 11/03/2016, 09h32
  2. [MySQL] Récupération de deux valeurs dans une boucle
    Par Asemounet dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/05/2015, 09h02
  3. Réponses: 1
    Dernier message: 22/03/2014, 17h19
  4. Comment récupérer des valeurs dans le résultats d'une commande ?
    Par Spheerys dans le forum Général Python
    Réponses: 6
    Dernier message: 22/02/2013, 11h08
  5. récupération de deux valeurs dans une seule checkbox
    Par khayri dans le forum Struts 1
    Réponses: 2
    Dernier message: 10/04/2007, 10h31

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