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 :

Recherchev avec correspondances multiples


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 12
    Par défaut Recherchev avec correspondances multiples
    Bonjour à tous,

    Je souhaite réaliser une recherchev dont il existe des correspondance multiples (exemple ci-dessous tableau). J'aimerais, par rapport à cet exemple que ma recherchev lorsque que je recherche la valeur 10, me renvoie d'abord 1 puis 4. Actuellement la recherchev que j'ai écrit me renvoie deux fois la valeur 1... comme une recherchev "classique"...

    Quelqu'un serait-il écrire une code vba pour avoir cette correspondance multiple ? Je vous remercie !

    Nom : Capture.PNG
Affichages : 229
Taille : 13,8 Ko

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Les RECHERCHEV ne sont pas fait pour ça.

    Dans ce cas là c'est un Tableau Croisé Dynamique qu'il te faut, qui sera au passage beaucoup plus rapide qu'une RECHERCHEV

  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,

    Vous avez demandé un code VBA, le voici avec le résultat affiché en colonne C. J'ai mis la valeur cherchée en dur dans le code, à vous de l'adapter à vos besoins/.
    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
    Sub Recherche()
        Application.ScreenUpdating = False
        Lig = 2
        Valeur = 10 'ValeurCherchée
        With Sheets("Feuil1").Columns(1)
            Set v = .Find(Valeur, lookat:=xlWhole)
                If Not v Is Nothing Then
                    Cells(1, "C") = "valeur Cherchée: " & Valeur
                    Deb = v.Address
                    Do
                        Cells(Lig, "C") = Cells(v.Row, "B")
                        Lig = Lig + 1
                        Set v = .FindNext(v)
                    Loop While Not v Is Nothing And v.Address <> Deb
                End If
        End With
    End Sub
    Cdlt

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 12
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,

    Vous avez demandé un code VBA, le voici avec le résultat affiché en colonne C. J'ai mis la valeur cherchée en dur dans le code, à vous de l'adapter à vos besoins/.
    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
    Sub Recherche()
        Application.ScreenUpdating = False
        Lig = 2
        Valeur = 10 'ValeurCherchée
        With Sheets("Feuil1").Columns(1)
            Set v = .Find(Valeur, lookat:=xlWhole)
                If Not v Is Nothing Then
                    Cells(1, "C") = "valeur Cherchée: " & Valeur
                    Deb = v.Address
                    Do
                        Cells(Lig, "C") = Cells(v.Row, "B")
                        Lig = Lig + 1
                        Set v = .FindNext(v)
                    Loop While Not v Is Nothing And v.Address <> Deb
                End If
        End With
    End Sub
    Cdlt
    Bonjour, merci pour votre réponse, je suis débutante en vba, j'essaye de comprendre votre code, il y a t il des variables que je doit déterminer en amont ? Notamment "Lig", "v" et "Valeur" ? Je vous remercie par avance !

  5. #5
    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,

    Dans "Lig=2", J'ai fixé la première ligne des résultats à la 2. Variable utilisée "LIG", mettez la ligne que vous voulez.
    Pour faire des essais et ne connaissant pas comment est construit votre fichier, j'ai fixé la valeur à rechercher à 10. Variable utilisée: "Valeur", à vous d'affecter cette variable la valeur à rechercher, comment sera-t-elle choisie?
    Rien à faire en ce qui concerne la variable "v"
    Dernier point: j'affiche les résultats dans la colonne "C", changez la lettre de la colonne si différente dans chaque "Cells(1, "C")"

    C'est tout

    Cdlt

  6. #6
    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,

    Pour ma part, il reste préférable de bien déclarer les variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Lig as Long
    Dim v as Range
    D'autre part, notre ami utilise apparemment un tableau structuré

    Pour la recherche donc, plutôt qu'une colonne entière, autant utiliser le champ adéquat du tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Données").Range("t_Données[valeur recherchée]")
    L'utilisation ici d'un tableau structuré permet de shunter la définition de plage par son adresse (derlign=....End(xlUp)

    Enfin, il est souvent, voire toujours, utile de bien rattacher les Objets (ici Cells) à leur parent (Worksheet).
    Dans le cas présent, je reporterais les résultats de la recherche dans une 2nde feuille, d'où la nécessité de ce rattachement.

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 12
    Par défaut
    Citation Envoyé par mat955 Voir le message
    Bonjour,

    Les RECHERCHEV ne sont pas fait pour ça.

    Dans ce cas là c'est un Tableau Croisé Dynamique qu'il te faut, qui sera au passage beaucoup plus rapide qu'une RECHERCHEV
    Bonjour,

    Merci pour votre réponse, mais je cherche à faire cela par une macro en vba. En effet mon exemple était simplifié, je travaille sur un fichier principal dont j'alimente deux colonnes avec beaucoup d'autres fichiers... Cette macro serait intégrée dans mon code général. Les tcd ne sont donc pas une solution pour moi....

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

Discussions similaires

  1. RechercheV avec résultat multiple
    Par gouN40 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/02/2020, 17h00
  2. [XL-2010] BLOQUE A CAUSE D'UNE RECHERCHEV avec des résultats multiples
    Par le petit excelleur dans le forum Excel
    Réponses: 6
    Dernier message: 22/03/2016, 17h39
  3. [XL-2013] Créer une rechercheV avec correspondances multiples
    Par Waldstein dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2014, 09h25
  4. Recherchev poussée avec résultats multiples
    Par solorac dans le forum Excel
    Réponses: 13
    Dernier message: 22/06/2007, 11h14
  5. Réponses: 7
    Dernier message: 23/10/2006, 20h59

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