Macro pour faire un INDEX/ EQUIV avec 2 conditions

Bonjour à tous

J'ai besoin d'aide car je voulais faire un INDEX/EQUIV avec 2 conditions (en matricielle avec &) sauf que mon fichier à trop de données dans mes colonnes (environ 35000 chacune) du coup la formule ne prend pas en compte.

Je dois donc le faire sous vba mais je suis nulle.

J'ai la feuille 1 colonne A où j'ai mes volumes que je dois rechercher dans la feuille 2 selon le nom et la date dans les 2 feuilles.

Je ne sais pas si je suis claire ?

En gros j'ai mes dates (en format date) et mes noms dans les 2 feuilles mais je dois renvoyer le volume selon la base de la feuille 2 vers la feuille 1.

Merci beaucoup par avance

Salut Anme,

en gros, non, ce n'est pas très clair...

Alors, tu vas nous faire un mini-fichier (pas besoin de tes 35000 lignes) avec un onglet à part, fait de tes petites mimines, qui expliquera plus efficacement qu'un long discours ce que tu veux au final!

A+

Bonjour,

J'ai besoin d'aide car je voulais faire un INDEX/EQUIV avec 2 conditions (en matricielle avec &) sauf que mon fichier à trop de données dans mes colonnes (environ 35000 chacune) du coup la formule ne prend pas en compte.

dans ce cas, pour alléger les calculs, ajoute une colonne qui fait déjà la concaténation des critères

Merci pour vos réponses. Ci-joint un fichier excel tout simple avec le format de ma demande. S'il manque des précisions n'hésitez pas.

Steelson, j'avais pensé effectivement à cette solution mais mon boss me dit que ce n'est pas propre et qu'il vaut mieux faire une macro pour cela

Bonjour,

ton fichier est un peu ... comment dire ... vide

tu trouveras ci-après un exemple de macro de recherche à 2 conditions ... je te laisse découvrir et adapter ?

Dim Found As Range, Firstfound As String
Dim rngSearch As Range
Dim Criteria As Variant

    Set rngSearch = Sheets("DataSheet").Range("B:B") ' à adapter

    Criteria = Sheets("ControlSheet").Range("I12:I15").Value ' en colonne = tableau

    Set Found = rngSearch.Find(What:=Criteria(1, 1), _
                               LookIn:=xlValues, _
                               LookAt:=xlWhole, _
                               SearchOrder:=xlByRows, _
                               SearchDirection:=xlNext, _
                               MatchCase:=False)

    If Not Found Is Nothing Then

        Firstfound = Found.Address

        Do ' à adapter
            If Found.EntireRow.Range("F1").Value = Criteria(2, 1) And _
               Found.EntireRow.Range("I1").Value = Criteria(3, 1) And _
               Found.EntireRow.Range("J1").Value = Criteria(4, 1) Then Exit Do 'Match found

            Set Found = rngSearch.FindNext(After:=Found)
            If Found.Address = Firstfound Then Set Found = Nothing

        Loop Until Found Is Nothing

    End If

    If Not Found Is Nothing Then
        Application.Goto Found.EntireRow
    Else
        MsgBox "Nothing matched all four criteria. ", , "No Match Found"
    End If

Voici la macro intégrée avec des valeurs que j'ai injectées (au hasard)

Merci beaucoup Steelson de m'aider.

J'ai suivi tes recommandations, seulement quand je lance la macro après avoir modifié les noms des feuilles, un message d'erreur apparait et la macro bloque à Set Found = rngSearch.Find(What :=critere1.Value, _

Comment puis-je résoudre ce problème ?

Bonjour,

modifie aussi le nom des feuilles dans la macro ... je suis parti de ton document mais il était tellement ... complexe !

sinon envoie moi un document un peu plus étoffé

d'ailleurs

Steelson, j'avais pensé effectivement à cette solution mais mon boss me dit que ce n'est pas propre et qu'il vaut mieux faire une macro pour cela

tu aurais pu masquer la colonne supplémentaire proposée !
Rechercher des sujets similaires à "macro index equiv conditions"