Identifier meilleure valeur dans une liste

louloutte63 -  
 swed -
Bonjour à tous,

Voilà pour faire court je suis débutant en programmation sous VB et je dois travailler avec ce language pour mon projet de fin d'études. Je vous serai extrêmement reconnaissant si quelqu'un pouvait m'aider car la sa fait pas mal de temps que je cherche et je trouve rien!

Mon problème: j'ai une liste (disons une colonne de 10 valeurs dans donc dix cases) et j'aimerais "checker" cette colonne et identifier dans cette liste la valeur qui est la plus forte (il doit y avoir une fonction existante pour cela mais je ne l'ai pas trouvé!), et également identifier la case où elle se trouve!

ex:
200
324
34
63
145
34
800
...

merci beaucoup pour votre aide!! :)
A voir également:

5 réponses

swed
 
Bonjour,

Je pense pas qu'il y ait de fonction existante pour chercher la plus grande valeur dans une liste.
D'ailleurs ca dépend, c'est quoi cette liste ? Un tableau de données ? Une listBox ? ComboBox ?

Je pense qu'il te sera nécessaire de faire une boucle, dont voici l'algorithme :

Initialiser posmax à -1.
Pour i allant de 1 au nombre d'éléments dans la liste :
SI posmax = -1 OU ième élément > posmax'ième élément ALORS posmax = i

Cordialement, M.
0
louloutte63
 
ok merci pour ta réponse swed je vais essayer avec ce que tu m'as donné!

en fait oui la liste est dans un tableau de données.
0
louloutte63
 
re bonjour!

bon en fait j'ai programmé en suivant ton conseil swed, mais sa me dit qu'un tableau est attendu...je ne voit pas trop ce qu'il veut dire par là!

mon petit programme:

If a > b Then //condition original: comparaison entre deux autres valeurs du même tableau

Dim posmax As Integer
posmax = -1

For i = 13 To 20

If posmax = -1 Or Feuil2.Cells(i, y).valor > posmax(i).valor Then //le problème est identifier ici pour posmax(i)

posmax = i
End If

Next i

MsgBox ("lameilleure valeur est " & Feuil2.Cells(i, y).valor)


merci encore pour votre aide!
0
barbouze85
 
Bonjour
essaye de mettre "posmax" a la place de i dans : MsgBox ("lameilleure valeur est " & Feuil2.Cells(i, y).valor)
car posmax sert a mémoriser la position de ta valeur max
donc faut que tu t'en serves
sinon pour ton histoire de tableau je sais pas

tiens moi stp

barbouze85
toujours au service de ces dames
0
louloutte63
 
ok merci barbouze, mais en fait je crois que c'est de ma faute car je n'ai pas créer de tableau pour recenser les valeurs, car en fait elle sont issues d'un copier/coller d'un autre tableau sur une autre feuille excel!!

donc est ce que quelqu'un a une autre idée svp?!

merci d'avance!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
swed
 
Ton erreur est dû à cette instruction : posmax(i).valor
Car posmax est un entier, et non un tableau. Il sert à identifier la position du nombre le plus haut dans la liste.

En gros tu as :
-posmax = la position de la valeur maximale dans la liste (ou -1 si pas encore trouvée)
-Feuil2.Cells(posmax, y).valor = la valeur la plus haute dans la liste (sauf si posmax =-1)
-Feuil2.Cells(i, y).valor = la valeur que tu es entrain de parcourir dans la liste

Voici le code corrigé (non testé) :

Dim posmax As Integer
posmax = -1

For i = 13 To 20

If posmax = -1 then
posmax=i
elseif Feuil2.Cells(i, y).valor > Feuil2.Cells(posmax, y).valor then
posmax = i
End If

Next i

MsgBox ("la meilleure valeur est " & Feuil2.Cells(posmax, y).valor)

NOTE IMPORTANTE :
Il ne faut pas mettre un test IF... OR ... THEN
Car dans ce cas, VB va tester les deux conditions, même si la première est vrai (contrairement au C, JAVA ou autre...).
Et donc quand posmax=-1, ton expression Feuil2.Cells(posmax, y).valor va planter...

(C'est clair?)

Cordialement, M.
0