Affichage de la variable la + forte

Résolu
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 - 7 avril 2008 à 12:45
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 7 avril 2008 à 13:02
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2008 à 13:02
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2008 à 12:57
" 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.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 avril 2008 à 13:00
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
0
Rejoignez-nous