VBA - VLOOKUP selon 2 critère
Bonjour,
Voilà, j'ai un problème de merge entre deux macro.
Script 1: Vérifie dans un tableau si celle-ci match avec une valeur et dans ce cas la fait remonter.
Script 2: Prend dans un tableau dans valeurs selon le champs de colonne ainsi qu'une date donné.
Le truc c'est que je me demande comment ajouter une loop pour faire remonter les valeurs du script 2 uniquements en liaison avec les résultat du script 1.
Je continu à chercher avec "IF" mais si vous avez mieux je suis prenneur
Merci d'avance pour votre aide
Je pense avoir trouver une piste avec index.
Le problème c'est que je me demande comment déclarer le changement de tableau selon le numéros d'item trouvé en colonne BJ
Code:
Option Explicit
Sub TaskperDay()
'--------------------------------------------------------------------------------------------------------------------------
'Variable
'--------------------------------------------------------------------------------------------------------------------------
Dim Cellule As Range 'variable range
Dim value1 As Range 'variable text
Dim value2 As Range 'variable text
Dim suite As Range 'variable range
'--------------------------------------------------------------------------------------------------------------------------
'Clean table
'--------------------------------------------------------------------------------------------------------------------------
Sheets("Matrice").Range("BJ2:BT2" & Sheets("Matrice").Range("BJ65535").End(xlUp).Row).ClearContents '----------------------------Modification
'--------------------------------------------------------------------------------------------------------------------------
'MSN link to SCOPE
'--------------------------------------------------------------------------------------------------------------------------
'Source value
Set value1 = Sheets("Dashboard").Range("A2")
Set value2 = Sheets("Matrice").Range("BJ1") '------------------------------------------------------------------------------------Modification
'Search the value in extract tab
For Each Cellule In Sheets("Table").Range("Q2:Q" & Sheets("Table").Range("A65535").End(xlUp).Row)
Set suite = Sheets("Matrice").[BJ65536].End(xlUp).Offset(1, 0) '------------------------------------------------------------------Modification
If Cellule = value1 Then
'--------------------------------------------------------------------------------------------------------------------------
'Find Item
'--------------------------------------------------------------------------------------------------------------------------
Sheets("Matrice").Range("BJ" & Sheets("Matrice").Range("BJ65535").End(xlUp).Row + 1) = Sheets("Table").Cells(Cellule.Row, 1) '---Modification
'--------------------------------------------------------------------------------------------------------------------------
'Consolidation Hours
'--------------------------------------------------------------------------------------------------------------------------
suite.Offset(0, 1).FormulaR1C1 = "=INDEX(PROD!C[-62]:C[-46],MATCH(""Worker Meca - MSN""&RC[-1],PROD!C[-62],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 2).FormulaR1C1 = "=INDEX(PROD!C[-63]:C[-47],MATCH(""Meca times - MSN""&RC[-2],PROD!C[-63],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 3).FormulaR1C1 = "=INDEX(PROD!C[-64]:C[-48],MATCH(""Worker Elec - MSN""&RC[-3],PROD!C[-64],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 4).FormulaR1C1 = "=INDEX(PROD!C[-65]:C[-49],MATCH(""Elec times - MSN""&RC[-4],PROD!C[-65],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 5).FormulaR1C1 = "=INDEX(PROD!C[-66]:C[-50],MATCH(""Worker Paint - MSN""&RC[-5],PROD!C[-66],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 6).FormulaR1C1 = "=INDEX(PROD!C[-67]:C[-51],MATCH(""Paint times - MSN""&RC[-6],PROD!C[-67],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 7).FormulaR1C1 = "=INDEX(PROD!C[-68]:C[-52],MATCH(""Worker Deco - MSN""&RC[-7],PROD!C[-68],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 8).FormulaR1C1 = "=INDEX(PROD!C[-69]:C[-53],MATCH(""Deco Times - MSN""&RC[-8],PROD!C[-69],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 9).FormulaR1C1 = "=INDEX(PROD!C[-70]:C[-54],MATCH(""Counter-Top - MSN""&RC[-9],PROD!C[-70],0),MATCH(DATE1,PROD!R[-1],1))"
suite.Offset(0, 10).FormulaR1C1 = "=INDEX(PROD!C[-71]:C[-55],MATCH(""CT Times - MSN""&RC[-10],PROD!C[-71],0),MATCH(DATE1,PROD!R[-1],1))"
'--------------------------------------------------------------------------------------------------------------------------
'Fin de boucle
'--------------------------------------------------------------------------------------------------------------------------
End If
Next
'--------------------------------------------------------------------------------------------------------------------------
'Clear memory system
'--------------------------------------------------------------------------------------------------------------------------
Set Cellule = Nothing
Set value1 = Nothing
End Sub
=INDEX(PROD!A:Q;EQUIV("Worker Meca - MSN"&BJ2;PROD!A:A;0);EQUIV(DATE1;PROD!1:1;1))Le problème vient de la recherche du tableau selon un critère, faudrait juste rendre variable la plage de recherche en fonction de un critère
=INDEX(PROD!A:Q;EQUIV("Worker Meca - MSN"&BJ2;PROD!A:A;0);EQUIV(DATE1; "PLAGE VARIABLE" ;1))Je continue à chercher en se sens, si jamais vous avez une idée je prends