A voir également:
- Identifier meilleure valeur dans une liste
- Liste déroulante excel - Guide
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Identifier appareil avec adresse mac - Guide
- Identifier un numéro de gsm belgique ✓ - Forum Mobile
- Liste de numéro de téléphone suspect 07 ✓ - Forum Mobile
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.