Affichage de la variable la + forte

[Résolu]
Signaler
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
bonjour,

en vba excel, j'ai 4 variables de type integer. J'aimerais afficher le nom de la variable ayant la valeur la plus élevée.

ex :
dim nb1, nb2, nb3, nb4 as integer

nb1 = 5
nb2 = 3
nb3 = 12
nb4 = 1

msgbox [le nom de la variable max, soit "nb3"]

Existerait-il une fonction du style MAX(liste de nb) qui rendrait la valeur max d'une liste de données ?

3 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
tu peux faire ce genre de choses :


Sub test()
Dim nb1 As Integer
Dim nb2 As Integer
Dim nb3 As Integer
Dim nb4 As Integer
Dim nResult As Long
Dim nIndex As Long

nb1 = 5
nb2 = 3
nb3 = 12
nb4 = 1

nResult = Max(nIndex, nb1, nb2, nb3, nb4)
MsgBox "La valeur max est : " & nResult & " (nb" & (nIndex + 1) & ")"
End Sub

Private Function Max(ByRef vnIndex As Long, ParamArray Values() As Variant) As Long
Dim i As Long
If UBound(Values) = -1 Then
vnIndex = -1
Else
vnIndex = 0
Max = Values(0)
For i = 1 To UBound(Values)
If Max < Values(i) Then
vnIndex = i
Max = Values(i)
End If
Next i
End If
End Function
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
" j'ai 4 variables de type integer"

faux:
tu as 3 Variant, et un Integer

dim nb1 as integer
Dim nb2 as integer
Dim nb3 as integer
Dim nb4 as integer

ou

dim nb1 as integer , nb2 as integer , nb3 as integer , nb4 as integer

là, ok, tu as bien 4 integer.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,
rien de "tout fait" mais retourner le nom de la variable ne te donnera pas grand chose (tu ne pourras pas le manipuler)...
bref

    Dim nb1 As Integer, nb2 As Integer, nb3 As Integer, nb4 As
Integer
    
    nb1 = 5
    nb2 = 3
    nb3 = 12
    nb4 = 1
    
    Dim sVar As String
    If nb1 >= nb2 And nb1 >= nb3 And nb1 >= nb4 Then sVar = "nb1"
    
    If LenB(sVar) = 0 Then
        If nb2 >= nb1 And nb2 >= nb3 And nb2 >= nb4 Then sVar = "nb2"
    End If

    If LenB(sVar) = 0 Then
        If nb3 >= nb1 And nb3 >= nb2 And nb3 >= nb4 Then
            sVar = "nb3"
        Else
            sVar = "nb4"
        End If
    End If
    

    MsgBox "le nom de la variable max est
'" & sVar & "'"

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp