1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
Sub Macro9()
'trouver la ligne correspondant au critères en colonne "A.B.C"
'exemple de base Evaluate("=MAX(ROW(Feuil1!A1:A10)*(Feuil1!A1:A10=""truc"")*(Feuil1!B1:B10=""machin"")*(Feuil1!C1:C10=""chose""))")
Dim feuille$, criteres, ColonS, I&, Formule$, debut$, Lig&,xx&
feuille = "Feuil1" 'nom de la feuille
Lig = 10
Do While Lig > 0
'criteres = Array("truc", "machin", "chose") 'criteres a retenir dans le meme ordre que les colonnes(test string)
criteres = Array(218, 345, 500) 'criteres a retenir dans le meme ordre que les colonnes(test numerique)
ColonS = Array("A2:A" & Lig, "B2:B" & Lig, "C2:C" & Lig) ' colonne a observer pour les criteres dans le meme ordre
debut = "(" & feuille & "!" & ColonS(0) & ")*"
For I = 0 To UBound(criteres)
criteres(I) = IIf(IsNumeric(criteres(I)), criteres(I), Chr(34) & criteres(I) & Chr(34))
ColonS(I) = "(" & feuille & "!" & ColonS(I) & "=" & criteres(I) & ")"
Next
Formule = "=MAX(ROW" & debut & Join(ColonS, "*") & ")"
'Formule = Replace(Formule, Chr(34) & Chr(34), Chr(34))
xx = Evaluate(Formule)
If xx > 0 Then
Debug.Print Join(ColonS, ";")
Debug.Print "pour Evaluate " & vbCrLf & Formule
Debug.Print "ligne " & xx
Debug.Print vbCrLf & " - --------------------------------------------------------" & vbCrLf
End If
Lig = xx - 1
'MsgBox xx
Loop
' Range("g1").FormulaArray = Formule
End Sub |
Partager