Trouver valeur la plus proche de 0

Bonjour,

Dans mon programme j'ai deux variable de type double, la première contient la valeur 0.005 et la deuxième à 0.02. J'essaie de trouver une fonction déjà existante en VBA pour savoir laquelle d'entre elles est le plus proche de 0.

J'avais opté pour une comparaison de ce type :

If (premiereVariable >= 0# And premiereVariable < deuxiemeVariable) Then
    .....
End If
If (deuxiemeVariable >= 0# And deuxiemeVariable < premiereVariable ) Then
    .....
End If

Mais dans le cadre de mon programme et afin de l'optimiser, j'ai besoin d'une telle fonction.

J'ai fait des recherches sur internet et sur le forum mais je n'ai pas trouvé ce que je désirais.

Est-ce que quelqu'un a la solution ? Merci d'avance.

Bonne journée.

Bonjour Tnussbaumer,

Comparaison de V1 par rapport à V2: PPZ sera entre deux valeurs celle plus proche de 0.

Sub Test
V1=0.005 : V2=0.02
PPZ= iif((V1<V2), V1, V2)
End sub

Bonne continuation.

Bonjour,

Un petit peu "capillo-tracté", mais ça fonctionne...

Sub essai()
Dim Prem As Double, Seco As Double, Result As Double
Prem = -0.005: Seco = 0.02
Result = Trouve_Nbr(Prem, Seco)
If Result <> 0 Then MsgBox Result Else MsgBox "Pas de valeurs positives"
End Sub

Function Trouve_Nbr(Nbr1 As Double, Nbr2 As Double) As Double
If Nbr1 > 0 Or Nbr2 > 0 Then
    Trouve_Nbr = IIf(Nbr1 * Nbr2 > 0, Application.Min(Nbr1, Nbr2), Application.Max(Nbr1, Nbr2))
End If
End Function

Bonjour Tnussbaumer,

Comparaison de V1 par rapport à V2: PPZ sera entre deux valeurs celle plus proche de 0.

Sub Test
V1=0.005 : V2=0.02
PPZ= iif((V1<V2), V1, V2)
End sub

Bonne continuation.

Merci pour votre solution.

Bonne journée

si aucune de tes variable n'est négative

V1=0.005 
V2=0.02

a = Array(V1, V2)
b = Application.Min(a)

Bonjour,

Un petit peu "capillo-tracté", mais ça fonctionne...

Sub essai()
Dim Prem As Double, Seco As Double, Result As Double
Prem = -0.005: Seco = 0.02
Result = Trouve_Nbr(Prem, Seco)
If Result <> 0 Then MsgBox Result Else MsgBox "Pas de valeurs positives"
End Sub

Function Trouve_Nbr(Nbr1 As Double, Nbr2 As Double) As Double
If Nbr1 > 0 Or Nbr2 > 0 Then
    Trouve_Nbr = IIf(Nbr1 * Nbr2 > 0, Application.Min(Nbr1, Nbr2), Application.Max(Nbr1, Nbr2))
End If
End Function

Merci pour cette solution. Effectivement elle est un peu tirée par les cheveux et aurait pu être un peu plus courte

Bonne journée

Bonjour à tous

Sub Test
V1=0.005 : V2=0.02
PPZ= iif((V1<V2), V1, V2)
End sub

Si les variables peuvent être négatives :

PPZ = WorksheetFunction.Min(Abs(x), Abs(y)) * IIf(a < 0 And y < 0, -1, 1)

Merci pour cette solution. Effectivement elle est un peu tirée par les cheveux et aurait pu être un peu plus courte

Bonne journée

J'ai juste pris en compte toutes les possibilités...

2 positifs

1 seul

aucun...

Rechercher des sujets similaires à "trouver valeur proche"