OVH Cloud OVH Cloud

Fonction VBA, Evalute et formulle matricielle

1 réponse
Avatar
loamar67
bonjour,
J'ai une formule matricielle du type
{=3DINDEX($D$1:$D$10;EQUIV($E$1&$F$1;$A$1:$A$10&$C$1:$C$10;0))}
Je souhaiterai la mettre dans une function personnalis=E9e du type :
Function rechMulti2(Valeur_recherche1, Valeur_recherche2, ByRef
Tableau_Recherche1 As Range, ByRef Tableau_Recherche2 As Range, plage
As Range)
rechMulti2 =3D Evaluate("INDEX(" & plage.Address & ",MATCH(" &
Valeur_recherche1 & Valeur_recherche2 & "," &
Tableau_Recherche1.Address & Tableau_Recherche2.Address & ",0))")
End Function

Mais ca ne fonctionne pas !
est ce que la solution est possible, il y t il une erreur de syntaxe

Merci
loamar

1 réponse

Avatar
michdenis
Bonjour loamar67,

Adapte le nom de la feuille dans la fonction appelante.
'------------------------------
Sub Mafunction()

'arguments : Toto et titi sont les critères, tu peux
'par des "range" en utilisant la propriété Text

With Worksheets("feuil1") 'A déterminer
a = rechMulti2("toto", "titi", .Range("A1:A10"), _
.Range("c1:C10"), .Range("D1:D10"))
End With
End Sub
'------------------------------

Function rechMulti2(Vr1 As String, Vr2 As String, _
Tr1 As Range, Tr2 As Range, _
Plg As Range)

Dim AdrPlg As String, adrTr1 As String
Dim R As String, T As String, AdrTr2 As String

With Plg
AdrPlg = .Parent.Name & "!" & .Address
End With

With Tr1
adrTr1 = .Parent.Name & "!" & .Address
End With

With Tr2
AdrTr2 = .Parent.Name & "!" & .Address
End With

R = Vr1 & Vr2
T = adrTr1 & "&" & AdrTr2

rechMulti2 = Evaluate("=INDEX(" & AdrPlg & _
",MATCH(""" & R & """," & T & ",0)*1)")
End Function
'------------------------------


Salutations!




"loamar67" a écrit dans le message de news:
bonjour,
J'ai une formule matricielle du type
{=INDEX($D$1:$D$10;EQUIV($E$1&$F$1;$A$1:$A$10&$C$1:$C$10;0))}
Je souhaiterai la mettre dans une function personnalisée du type :
Function rechMulti2(Valeur_recherche1, Valeur_recherche2, ByRef
Tableau_Recherche1 As Range, ByRef Tableau_Recherche2 As Range, plage
As Range)
rechMulti2 = Evaluate("INDEX(" & plage.Address & ",MATCH(" &
Valeur_recherche1 & Valeur_recherche2 & "," &
Tableau_Recherche1.Address & Tableau_Recherche2.Address & ",0))")
End Function

Mais ca ne fonctionne pas !
est ce que la solution est possible, il y t il une erreur de syntaxe

Merci
loamar