Identifier meilleure valeur dans une liste
louloutte63
-
swed -
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!! :)
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:
- Identifier meilleure valeur dans une liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Identifier appareil avec adresse mac - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
5 réponses
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.
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.
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.
en fait oui la liste est dans un tableau de données.
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!
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!
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
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
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!!
donc est ce que quelqu'un a une autre idée svp?!
merci d'avance!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.