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 :

Recherche matrice avec retours multiples


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2
    Par défaut Recherche matrice avec retours multiples
    Bonjour,


    Je souhaite automatiser une recherche et retours de données sur Excel 2016.
    Principalement, j'aimerai que ma macro ou code VBA selectionne une case x sur feuille 1 et aille chercher x sur une ligne d'une matrice dans la feuille 2 puis parcours la colonne correspondant à x et selectionne les lignes avec un 1 et retourner les données de la colonne A correspondantes à ces lignes.

    Exemple: Pour le tableau en dessous, ce serait trouver x dans la matrice, identifier les lignes avec 1 et dans une autre feuille retourner sur une ligne: x a c

    x y z
    a 1 1 0
    b 0 1 1
    c 1 1 0




    Merci beaucoup.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Il aurait mieux valu que tu retournes un code que tu auras développé.

    Pour le processus:
    - Définir la dernière ligne de ton champ de données
    - Initialisation d'un variable de chaîne de caractères à vide ("")
    - Recherche de la valeur sur la 1ère ligne, par la méthode Find qui retourne un objet Range
    - Considérer sa colonne
    - Boucler sur les cellules de la colonne de cet objet jusqu'à la dernière ligne ci-dessus.
    - Si la valeur de la cellule est 1 alors la variable chaîne de caractères est égale à elle-même concaténée avec la cellule de la 1ère colonne décalée de x colonnes, soit la colonne ci-dessus - la colonne où sont reportées les valeurs A, B, C...

    Pour la méthode Find, voir ici.
    Pour les boucles, voir
    Pour le décalage d'un objet Range, voir cet espace

    En fonction de ces indications, tu peux essayer de construire un code et revenir, le cas échéant, en le reportant et en précisant le(s) point(s) d'achoppement.

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Comme ceci
    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
    Sub Recup_Valeurs()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim DerLig_f1 As Long, DerLig_f2 As Long
        Dim i As Long, j As Long
        Application.ScreenUpdating = False
        Set f1 = Sheets("Feuil1")
        Set f2 = Sheets("Feuil2")
        DerLig_f1 = f1.[A10000].End(xlUp).Row
        DerLig_f2 = f2.[A10000].End(xlUp).Row
        For i = 2 To DerLig_f1
            Result = ""
            Set x = f2.Rows(1).Find(f1.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
            For j = 2 To DerLig_f2
                If f2.Cells(j, x.Column) = 1 Then Result = Result & " " & f2.Cells(j, "A")
            Next j
            f1.Cells(i, "B") = Result
        Next i
    End Sub
    Fichier en exemple
    Pièce jointe 508709

    Cdlt

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    et le bricolage des débutants
    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 testtt()
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Dim ValRechercher As String
    Dim nbColonnes As Long
    Dim Derligne As Long
    Dim L As Long
    Dim I As Long
    Dim j As Integer
    Set F1 = Sheets("Feuil1")
    F1.Range("B4:GE4").ClearContents
    Set F2 = Sheets("Feuil2")
    ValRechercher = F1.Cells(2, 2)
    j = 2
    nbColonnes = F2.Cells(1, Columns.Count).End(xlToLeft).Column
        For I = 2 To nbColonnes
          If F2.Cells(1, I) = ValRechercher Then
          Derligne = F2.Cells(Rows.Count, I).End(xlUp).Row
          For L = 2 To Derligne
          If F2.Cells(L, I) = 1 Then F1.Cells(4, j) = F2.Cells(L, 1)
          If F1.Cells(4, j) <> "" Then j = j + 1
          Next L
          End If
        Next I
    End Sub
    Fichiers attachés Fichiers attachés

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Arturo,

    L'algorithme de ton code ressemble à celle du mien.

    Au demeurant, notre ami n'ayant pas retourné de code, il aurait été préférable, pour lui, d'effectuer une recherche en fonction de mes indications. Non?

    Pas grave...

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour MarcelG,

    L'algorithme de ton code ressemble à celle du mien.
    Au demeurant, notre ami n'ayant pas retourné de code, il aurait été préférable, pour lui, d'effectuer une recherche en fonction de mes indications. Non?
    En fait, j'étais resté ouvert sur la demande initiale, et c'est lorsque j'ai déposé et enregistré ma proposition que je me suis aperçu après coup que vous aviez déjà répondu, toutes mes excuses.

    Bien cordialement

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    D'accord.
    Bonne journée.

Discussions similaires

  1. Rechercher/Remplacer avec retour à la ligne
    Par LittleBean dans le forum Eclipse
    Réponses: 2
    Dernier message: 26/05/2011, 10h31
  2. Procédure stockée avec retour multiple
    Par lahmar.abdel1 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 17/02/2011, 16h19
  3. Moteur de recherche avec "select multiple" dynamique AJAX
    Par enclave_51 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/07/2008, 16h21
  4. Recherche avec réponse multiple
    Par exover dans le forum Excel
    Réponses: 12
    Dernier message: 26/03/2008, 16h36
  5. Algorithme de recherche avec retour de propositions.
    Par zeavan dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/11/2007, 12h48

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