Réponse acceptée !
Ah, c'était pas loin, l'idée est là.
dans tableau(w), w n'est qu'un index, il ne représente pas la valeur de la case dans le tableau.
Donc tableau(w*-1) ne représente pas la valeur absolue de tableau(w), au pire ça ne te donnera que la valeur présente dans une autre case du tableau (à supposé qu'elle existe) et en l'ocurence en tableau(-w)
Mais pour ce qui est de la valeur absolue, autant utiliser la fonction déjà existante.
Le code exact sera plutot ceci :
Dim w As Integer
Dim nombre As Integer
Dim memorise As Integer
nombre = 9999999
For w = LBound(tableau) To UBound(tableau)
If Math.Abs(tableau(w)) < nombre Then
nombre = Math.Abs(tableau(w))
memorise = w
End If
Next w A noter que ce code est pour VB2005, rubrique ou tu as posté. Si tu es en VB6, remplace Math.Abs par Abs
A noter aussi qu'en VB2005, l'index inférieur d'un tableau (LBound) est toujours =0, ce n'est pas forcément le cas en VB6.
Donc en VB2005, tu pourrais sans crainte remplacer LBound(tableau) par 0
ATTENTION, ton tableau semble contenir des décimaux, c'est donc un tableau de Single ou de Double. nombre doit absolument etre du même type que les données dans ton tableau, donc pas un Integer mais un Single ou un Double
---- Sevyc64 (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #
[ Lien ]