Fonction recherhant la valeur minimun dans une plage de donnée a rechercher.

F2T

XLDnaute Occasionnel
Bonjour,

quelqu'un pourrait il me renseigner sur la raison de la non fonctionalité de cette fonction.

Code:
Function MININ(VAL1 As String, VAL2 As String)

Dim Num1 As String
Dim Num2 As String


Num1 = WorksheetFunction.EQUIV(VAL1, Workbooks("TB").Worksheets("DATA").RANGE("A1:A36500"))
 Num2= WorksheetFunction.EQUIV(VAL2, Workbooks("TB").Worksheets("DATA").RANGE("A1:A36500"))


MININ = WorksheetFunction.MIN("B" & Num1 & ":B" & Num2)


End Function

Une erreur #VALUE! apparait.

Merci pour l'aide. :confused:

peace
 

Gorfael

XLDnaute Barbatruc
Re : Fonction recherhant la valeur minimun dans une plage de donnée a rechercher.

Salut F2T et le forum
Ça t'apprendra à utiliser des fonctions de feuille de calcul en VBA
EQUIV est une fonction de feuille de calcul française ! En Anglais, il faut utiliser Match
A+
 

F2T

XLDnaute Occasionnel
Re : Fonction recherhant la valeur minimun dans une plage de donnée a rechercher.

Le problem doit venir d'autre part car sous cette forme cela ne fonctionne pas non plus.


Function MININ(VAL1 As String, VAL2 As String)

Dim Num1 As String
Dim Num2 As String


Num1 = WorksheetFunction.MATCH(VAL1, Workbooks("TB").Worksheets("DATA").RANGE("A1:A36500"))
Num2= WorksheetFunction.MATCH(VAL2, Workbooks("TB").Worksheets("DATA").RANGE("A1:A36500"))


MININ = WorksheetFunction.MIN("B" & Num1 & ":B" & Num2)


End Function

Toute idée est la bienvenue.:)
 

Gorfael

XLDnaute Barbatruc
Re : Fonction recherhant la valeur minimun dans une plage de donnée a rechercher.

Salut F2T et le forum
Pense à utiliser les balises de code (icone # en mode avancé)

Difficile d'être sûr de comprendre le problème avec un code faux.
Ce que je crois comprendre : la fonction doit renvoyer la valeur mini en B, en déterminant les ligne par une valeur en A.
Personnellement, j'évite au maximum d'utiliser les fonctions en VBA
Code:
Function MININ(VAL1 As String, VAL2 As String)
Dim Cel_1 As Range, Cel_2 As Range
Application.Volatile
With Workbooks("TB").Worksheets("DATA")
    Set Cel_1 = .Columns(1).Find(What:=VAL1, LookIn:=xlValues, LookAt:=xlWhole)
    If Cel_1 Is Nothing Then
        MININ = VAL1 & " introuvable"
        Exit Function
    End If
    Set Cel_2 = .Columns(1).Find(What:=VAL2, LookIn:=xlValues, LookAt:=xlWhole)
    If Cel_2 Is Nothing Then
        MININ = VAL2 & " introuvable"
        Exit Function
    End If
    MININ = WorksheetFunction.Min(.Range(Cel_1.Offset(0, 1), Cel_2.Offset(0, 1)))
End With
End Function
Je suppose que comme tu indiques le classeur et la feuille, la feuille de recherche est différente de la feuille active : il faut se rappeler que par défaut, c'est toujours le classeur actif, et la feuille active.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 249
Messages
2 086 599
Membres
103 256
dernier inscrit
Melomaniak