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
71
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
71
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
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
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