Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Index et Match avec deux critères vba

  • Initiateur de la discussion Initiateur de la discussion lemarcheurfou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

lemarcheurfou

Guest
Bonjour à tous.

Je suis face à un petit problème depuis hier, je vous explique mon souci.
J'ai deux feuilles dans mon fichier excel, les deux feuilles ont 3 colonnes distincte le "Nom", "Prénom" et "Age". Je veux donc récuperer dans ma deuxième feuille l'age de chaque personne grace à leur nom et prénom.

J'ai utilisé la combinaison Index et Match mais sa marche pas.😕😕

Je vous fourni un fichier exemple avec la macro que j'ai créée.

Je vous remercie de votre aide par avance.
 

Pièces jointes

Re : Index et Match avec deux critères vba

Bonjour,
à tester (formule matricielle à valider par Ctrl, Maj et entrée) :
Code:
=INDEX(Sheet1!C$2:C$8;EQUIV(Sheet2!A2&Sheet2!B2;Sheet1!A$2:A$8&Sheet1!B$2:B$8;0))
A+
 
Re : Index et Match avec deux critères vba

Bonjour,

Merci pour ta réponse David, mais je voudrais faire ça en vba car mon fichier ici est juste un exemple. J'ai réussi à trouver une solution mais elle n'est pas très top. Si quelqu'un pourrais simplifier ça.

Code:
Dim cellule As Range, c As Range
Dim Sh1, Sh2 As String
Sh1 = "Sheet1"
Sh2 = "Sheet2"
i = Sheets(Sh2).Range("A" & Rows.Count).End(xlUp).Row
For A = 2 To i

For Each cellule In Sheets(Sh2).Range("A2:B" & i)

With Sheets(Sh1).Range("B2:D30000")
    Set c = .Find(cellule.Value, LookIn:=xlValues)
    If Not c Is Nothing Then
    cellule.Offset(0, 1) = c.Offset(0, 1)
    End If
End With
Next
Next A
 
Re : Index et Match avec deux critères vba

Bonjour,
en VBA différentes possibilités existent (utiliser la formule via l'enregistreur de macro et remplacer la formule par sa valeur, utiliser un Evaluate, passer par Find, ...).
Ci-joint une proposition en regroupant les données dans un array et en utilisant Match :
Code:
Sub test3()
Dim Pl As Range, T() As String, DLig As Long, LigNP As Long
DLig = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Set Pl = Sheets("Sheet1").Range("A2:B" & DLig)
ReDim T(1 To Pl.Rows.Count)
For i = LBound(T) To UBound(T)
  T(i) = Pl(i, 1) & Pl(i, 2)
Next i
With Sheets("Sheet2")
For i = 2 To DLig
  On Error Resume Next
  LigNP = Application.Match(.Cells(i, 1) & .Cells(i, 2), T, 0) + 1
  If LigNP > 0 Then .Cells(i, 3) = Sheets("Sheet1").Cells(LigNP, 3): Err.Clear: LigNP = 0
Next i
End With
End Sub
Vois si cela peut t'aider.
A+
 
Re : Index et Match avec deux critères vba

Merci David pour ton aide j'ai finalement opter pour ta proposition elle est plus simple à adapter.

Bonne journée à toi et encore merci pour ton aide et ton explication.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
659
Réponses
7
Affichages
841
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…