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 ou index(equiv) pour la recherche de plusieurs références sur vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    ingénieur logistique
    Inscrit en
    Mai 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : ingénieur logistique

    Informations forums :
    Inscription : Mai 2016
    Messages : 23
    Par défaut Recherchev ou index(equiv) pour la recherche de plusieurs références sur vba
    Bonjour à tous,

    J'aimerai réaliser via VBA une recherchev ou index(equiv) multiple.

    Je m'explique, j'ai 2 variables :

    - a : nombre d'occurrences dans la colonne responsable
    - r : nombre d'occurrences dans la colonne agents

    Mon exemple : a = 2 ; r = 3

    J'aimerai réaliser :
    A1 = rechercher la première occurrence dans la colonne responsable
    A2 = rechercher la deuxième occurrence dans la colonne responsable
    A3 = rechercher la première occurrence dans la colonne agents
    A4 = rechercher la deuxième occurrence dans la colonne agents
    A5 = rechercher la troisième occurrence dans la colonne agents

    J'arrive à ce jour à rechercher la première occurrence pour chaque colonne mais pas les suivantes. ( via formule INDEX(MATCH) )

    Je vous remercie d'avance pour vos réponses et votre aide.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par thibeau67 Voir le message
    J'arrive à ce jour à rechercher la première occurrence pour chaque colonne mais pas les suivantes. ( via formule INDEX(MATCH) )
    Il suffit d'indiquer que la zone de recherche commence à la ligne suivant celle du résultat précédent.

  3. #3
    Membre averti
    Homme Profil pro
    ingénieur logistique
    Inscrit en
    Mai 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : ingénieur logistique

    Informations forums :
    Inscription : Mai 2016
    Messages : 23
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Il suffit d'indiquer que la zone de recherche commence à la ligne suivant celle du résultat précédent.
    Bonjour,

    Tout d'abord merci pour votre réponse.

    Je ne vois pas comment coder ce que vous dites sur vba.

    J'ai ma boucle qui va faire défiler les agents 1 a 1.

    Et dans un deuxième onglet ("ONT009") la base de donnée avec les informations à récupérer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Cells(i, 2).FormulaR1C1 = _
                "=INDEX('ONT009'!C[2],MATCH(""*" & Cells(i, 1).Value & "*"",'ONT009'!C[20],0))"
          If (IsError(Cells(i, 2).Value)) Then Cells(i, 2).Value = ""
          If Cells(i, 2).Value = 0 Then Cells(i, 2).Value = ""
    Voilà mon code pour récupérer la première occurrence dans la colonne agents.

    Je voudrais pour l'exemple cité mettre en :

    Alain : Taches responsable 1
    Alain : Taches responsable 2
    Alain : Taches agent 1
    Alain : Taches agent 2
    Alain : Taches agent 3

    Je sais pas si je suis assez claire dans mes explications par contre..

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Décompose ta formule en deux : tu mets le résultat de MATCH (n° ligne de ta recherche) dans une variable puis tu la traites dans INDEX.
    Comme ça, tu conserves le numéro de ligne résultat et tu peux faire le MATCH suivant en modifiant la zone de recherche.

    Personnellement, je n'aurais pas utilisé MATCH et INDEX mais les outils VBA.
    J'aurais fait une recherche avec un Find appliqué au Range de la zone de recherche.
    Et pour le résultat, un simple Cells (ou même un Offset) suffirait.

  5. #5
    Membre averti
    Homme Profil pro
    ingénieur logistique
    Inscrit en
    Mai 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : ingénieur logistique

    Informations forums :
    Inscription : Mai 2016
    Messages : 23
    Par défaut
    J’ai déjà fait des recherches sur find mais je ne vois pas trop comment adapter le codage à ma situation à cause des valeurs multiples.

    Pourriez-vous m’aider pour cela ?

    En vous remerciant d’avance et vous souhaitant une bonne journée

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par thibeau67 Voir le message
    J’ai déjà fait des recherches sur find mais je ne vois pas trop comment adapter le codage à ma situation à cause des valeurs multiples.
    Déjà, je ne vois pas ce que MATCH pourrait faire et que Find ne pourrait pas faire.

    Mais dans ton cas, ce serait, au contraire, plus approprié : Find a une petite soeur nommée FindNext qui poursuit la recherche de sa grande soeur avec les mêmes critères, ce qui conviendrait très bien à ton problème.
    Bien sûr, pour que ça s'active plusieurs fois, il faudrait créer une boucle.
    Lire ceci :
    https://msdn.microsoft.com/fr-fr/lib.../ff839746.aspx
    https://msdn.microsoft.com/fr-fr/lib.../ff196143.aspx

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/03/2018, 12h41
  2. Réponses: 3
    Dernier message: 19/07/2012, 12h05
  3. Recherche de plusieurs résultats sur plusieurs critères
    Par Chen norris dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/08/2011, 17h18
  4. [DeskI XiR2] Equivalent rechercheV ou index/equiv sous BO
    Par courti01 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/01/2011, 16h23
  5. [XL-2003] RechercheV RechercheH Index/Equiv
    Par kev24gones dans le forum Excel
    Réponses: 5
    Dernier message: 23/02/2010, 09h57

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