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

Excel Discussion :

Résultat sur plusieurs lignes


Sujet :

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ésultat sur plusieurs lignes
    Bonjour à tous?

    J'ai une une formule =VLOOKUP(C35, INDIRECT("T_"&B5&"",TRUE),2) qui me donne le résultat cherché dans un tableau d'un autre onglet.
    La colonne ou le résultat est trouvé comporte X nombre de montants.

    C D
    Anc T_01
    L35 21 1234
    L36 23 2345
    L37 25 3456
    ...

    Je voudrais trouvais trouver le moyen de trouver les X montants qui suivent.

    J'ai également la formule qui suit (matricielle ou pas) Mais elle me donne une erreur car je n'ai pas la fonction filtre.


    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =Filtre(INDIRECT("T_"&B5&""),INDIRECT("T_"&B5&"[aNC]")>=VLOOKUP(C35,INDIRECT("T_"&B5),1,TRUE),1)

    Qui peut m'aider ?

    Merci d'avance

    Habiler

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut Recherche multiple
    J'opterai pour un code vba, du style:

    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
    Sub MultipleSearch()
     
        ' Définir la valeur à trouver
        Dim cible As String: cible = ActiveSheet.[C35].Value    ' à adapter
     
        ' Définir la zone de recherche
        Dim zoneRecherche As Range
        Set zoneRecherche = Sheets("monOnglet").Range("monTableau") ' à adapter
     
        Dim maCellule As Range
        Set maCellule = zoneRecherche.Find(cible)
     
        ' Si introuvable, sortir
        If maCellule Is Nothing Then
            MsgBox cible & " n'est pas trouvée !"
            Exit Sub
        End If
     
        ' mémoriser la 1ère adresse de maCellule
        Dim PremAdresse As String
        Dim Resultat
        PremAdresse = maCellule.Address
     
        ' Repérer toutes las cellules contenant la cible
        Do
            Debug.Print "Cible trouvée: " & maCellule.Address
            Resultat = maCellule.Offset(0, 2).Value ' éuivalent de "VLOOKUP(C35, INDIRECT("T_"&B5&"",TRUE),2)"
            '... copiez/coller ce 'Resultat' à l'endroit où vous vouler, et continuer ...
            Set maCellule = zoneRecherche.FindNext(maCellule)
        Loop While maCellule Is Nothing And maCellule.Address <> PremAdresse
     
    End Sub

  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
    Merci pour votre aide rapide

    En fait j'ai mal libellé mon problème.

    J'ai une feuille Wd dans lesquels se trouvent les critères (B5 et B7) et WDScales dans lesquelles se trouvent les données qui doivent apparaître en wd!B10:c15

    Voici un schéma de mon problème.

    Nom : T1.jpg
Affichages : 121
Taille : 190,8 Ko

    J'ai commencé a adapter le code Mais comme faire apparaître le resultat en wd!B10:c15. Comment fait-on appel a la sub MultipleSearch.
    Les données de WDScales font l'objet d'un tableau nommé scales et chaque collonne est egalement un tableau dont le nom = le contenu de la 1ère rangée
    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
    Sub MultipleSearch()
     
        ' Définir la valeur à trouver
        Dim cible As String: cible = ActiveSheet.[WDScales!C35].Value    ' à adapter
     
        ' Définir la zone de recherche
        Dim zoneRecherche As Range
        Debug.Print cible
        Set zoneRecherche = Sheets("WDScales").Range("Scales") ' à adapter
     
        Dim maCellule As Range
        Set maCellule = zoneRecherche.Find(cible)
     
        ' Si introuvable, sortir
        If maCellule Is Nothing Then
            MsgBox cible & " n'est pas trouvée !"
            Exit Sub
        End If
     
        ' mémoriser la 1ère adresse de maCellule
        Dim PremAdresse As String
        Dim Resultat
        PremAdresse = maCellule.Address
         Debug.Print "PremAdresse: " & maCellule.Address
        ' Repérer toutes las cellules contenant la cible
        Do
            Debug.Print "Cible trouvée: " & maCellule.Address
            Resultat = maCellule.Offset(2, 0).Value ' éuivalent de "VLOOKUP(C35, INDIRECT("T_"&B5&"",TRUE),2)"
            '... copiez/coller ce 'Resultat' à l'endroit où vous vouler, et continuer ...
            Set maCellule = zoneRecherche.FindNext(maCellule)
        Loop While maCellule Is Nothing And maCellule.Address <> PremAdresse
       Debug.Print "PremAdresse: " & Resultat
    End Sub
    Merci d'avance

    Habiler

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 552
    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 552
    Par défaut
    Bonjour

    Certainement faisable par PowerQuery, intégré à Excel mais poste un fichier car tes explications paraissent assez curieuses

  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
    vOICI UN FICHIER TEST
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 552
    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 552
    Par défaut
    re

    Citation Envoyé par HABILER Voir le message
    ...je n'ai pas la fonction filtre...
    Tu as 365 ou pas ?

    Si oui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FILTRE(INDIRECT("T_"&B5);INDIRECT("T_"&B5&"[Anc]")>=RECHERCHEV(C35;INDIRECT("T_"&B5&"[Anc]");1;1))
    Si non, une solution PowerQuery basée sur 2 cellules nommées (Choix1 et Choix2 colorées en orange)

    On peut masquer les en-têtes du tableau résultat, actualiser par clic droit sur la tableau résultat ou par Données, Actualiser tout ou par une ligne de VBA
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/09/2019, 13h00
  2. Récuperer une seule ligne de résultat sur plusieurs
    Par vever dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/11/2009, 00h06
  3. [MySQL] MYSQL :JOIN, et résultats sur plusieurs lignes
    Par lenono dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/03/2009, 10h12
  4. Réponses: 1
    Dernier message: 03/10/2008, 13h29
  5. Réponses: 4
    Dernier message: 29/08/2008, 14h21

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