Formule Index Equiv avec 3 conditions en VBA

Bonjour,

je souhaite trouver l'équivalent de la Formule Index EQUIV en VBA (macro) qui prends en compte 3 conditions sur des colonnes et affiche le résultat.

j'ai trouvé un code que j'ai adapté à mon tableau sauf je n'arrive pas à ajouter les 3 conditions.

je vous joints le fichier qui explique mon But et le problème que je n'arrive pas à le résoudre.

Merci d'avance pour vos suggestion et vos aides.

13classeur1.xlsm (19.84 Ko)

Salut Achraf12,

Quelque chose comme ça ? À adapter en fonction de ton code, là j'ai pris des cellules fixent.

    Set recherche = Worksheets("Feuil2").Range("C1:C1000").Find(What:=Worksheets("Feuil1").Range("C3"), LookAt:=xlWhole)

    If (Worksheets("Feuil1").Range("C3").Value = Worksheets("Feuil2").Range("C" & recherche.Row).Value) And (Worksheets("Feuil1").Range("D3").Value = Worksheets("Feuil2").Range("D" & recherche.Row).Value) And (Worksheets("Feuil1").Range("E3").Value = Worksheets("Feuil2").Range("E" & recherche.Row).Value) Then

        Worksheets("Feuil1").Range("G3").Value = Worksheets("Feuil2").Range("G" & recherche.Row).Value

    End If

Bonne journée,

Baboutz

Bonsoir Achraf12, Baboutz, le forum,

Une tentative avec SOMME.SI.ENS. .....

Sub test()
 Dim F1 As Worksheet, F2 As Worksheet
 Dim pl1 As Range, pl2 As Range, pl3 As Range, pl4 As Range
 Dim i As Integer, dl As Integer, dl2 As Integer

  Set F1 = Sheets("Feuil1")
      dl = F1.Range("A" & Rows.Count).End(xlUp).Row
  Set F2 = Sheets("Feuil2")
     dl2 = F2.Range("A" & Rows.Count).End(xlUp).Row
  Set pl1 = F2.Range("G2:G" & dl2)
  Set pl2 = F2.Range("C2:C" & dl2)
  Set pl3 = F2.Range("D2:D" & dl2)
  Set pl4 = F2.Range("E2:E" & dl2)

  Application.ScreenUpdating = False

   For i = 2 To dl
    F1.Range("G" & i) = Application.WorksheetFunction.SumIfs(pl1, pl2, F1.Range("C" & i), pl3, F1.Range("D" & i), pl4, F1.Range("E" & i))
   Next i

  Application.ScreenUpdating = True
End Sub
8classeur1-2.xlsm (21.70 Ko)

Cordialement,

Bonjour xorsankukai,

Merci pour votre réponse.

j'ai testé la macro sa fonctionne mais elle encrasse les cellules déjà remplis,

mon but c'est que la macro remplis uniquement les cellule vide en respectons les condition de recherche sur les colonnes.

Merci encore une fois pour ton aide

Re,

mon but c'est que la macro remplis uniquement les cellule vides en respectant les condition de recherche sur les colonnes.

Pas sûr de tout comprendre....

Donc si G est vide, tu appliques la formule en G, sinon tu laisses la valeur déjà présente en G ?

Sub test()
 Dim F1 As Worksheet, F2 As Worksheet
 Dim pl1 As Range, pl2 As Range, pl3 As Range, pl4 As Range
 Dim i As Integer, dl As Integer, dl2 As Integer

  Set F1 = Sheets("Feuil1")
      dl = F1.Range("A" & Rows.Count).End(xlUp).Row
  Set F2 = Sheets("Feuil2")
     dl2 = F2.Range("A" & Rows.Count).End(xlUp).Row
  Set pl1 = F2.Range("G2:G" & dl2)
  Set pl2 = F2.Range("C2:C" & dl2)
  Set pl3 = F2.Range("D2:D" & dl2)
  Set pl4 = F2.Range("E2:E" & dl2)

  Application.ScreenUpdating = False

   For i = 2 To dl
    If F1.Range("G" & i) = "" Then
       F1.Range("G" & i) = Application.WorksheetFunction.SumIfs(pl1, pl2, F1.Range("C" & i), pl3, F1.Range("D" & i), pl4, F1.Range("E" & i))
    End If
   Next i

  Application.ScreenUpdating = True
End Sub
7classeur1-2.xlsm (21.28 Ko)

Cordialement,

Rechercher des sujets similaires à "formule index equiv conditions vba"