Valeur maxi [Résolu]

Signaler
-
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
-
Bonjour,
je voudrai savoir comment on fait pour sortir une valeur maxi d une listbox pour affiche dans un textbox
sachant que d autres valeurs vont venir s ajouter

36 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
en déclarant une valeur lamax, à laquelle tu donnes la valeur du 1er élément de ta liste.
en parcourant ta listbox ===>> tu y lis chaque valeur ===>> si valeur > lamax ===>> lamax = cette valeur
A l'issue de cette boucle, tu écris la valeur de lamax dans ta textbox.
Reviens avec ton code d'essai écrit sur ces bases si encore vraiment en difficulté.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
ok mais je voudrai les lignes de code
ex valeurs stocke dans une listbox nomme list2
valeur maxi a afficher dans un textbox nomme text1
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
ok mais je voudrai les lignes de code

Non.
Autant j'accepterai volontiers de corriger un code que tu auras au moins tenté d'écrire, autant je refuserai de te fournir un "tout cuit", surtout aussi simple.
Et tu vas s'il te plait te mettre un peu au travail.
Les articles d'une listbox ListBox1 sont indexés de 0 (le premier) à Listbox1.ListCount-1 (le dernier)
On parcourt une listbox en boucle, du premier jusqu'au dernier, part une boucle :
For i = 0 to listbox1.count -1
...... du code ...
Next

ListBox1.List(i) lit l'article d'index i dans la listbox
Voilà !
Tu en sais assez pour travailler.

PS : lorsque tu auras passé cette étape, on parlera (et seulement alors) de l'alimentation de ta listbox. Car il est à peu près certain que c'est à ce moment-là et non à postériori, qu'il serait mille fois plus adroit de déterminer cette plus grande valeur (économie d'une boucle).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Le code que tu montres là ne fait qu'ajouter à la listbox et ce : autant de fois que tu as déjà des articles dans ce contrôle !
Et encore ! : ===>> si vide au départ ==>> tu n'en rajoutes même aucun (puisque listcount = 0 et que la boucle n'oprère alors même pas).
Il ne correspond en rien à ce que je t'ai dit de faire !
Quant à a = a + list2.topindex ===>> il ajoute 0 à 0 autant de fois que tu as d'articles !
Ce n'est pas sérieux du tout, du tout, du tout !
Relis ce que je t'ai dit plus haut et reviens avec du au moins raisonné.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
As-tu (apparemment non) au moins ouvert ton aide VB6 sur le mot AddItem (méthode AddItem) ? Je viens de le faire et j'y vois un exemple : celui de l'ajout d'items en boucle !
J'ai également ouvert (l'as-tu fait ? je ne le crois pas) cette même aide VB6 sur le mot TopIndex (propriété TopIndex). Ce qu'est Topindex y est parfaitement expliqué (encore que le seul nom de cette propriété soit très ... révélateur ...)
As-tu au moins installé l'aide VB6 ? Si non ===>> à faire d'urgence avant de continuer à essayer de développer. Nui, même le plus avancé, ne saurait développer valablement sans cette aide VB6.
Ce forum, quant à lui, n'est pas un substitut à l'aide, mais là pour aider en cas de difficulté dans l'application de ce qui est exprimé dans cette aide.

EDIT : j'ajoute ici l'expression du pour le moins très grand étonnement que génère la constatation d'un paradoxe extraordinaire :
- le code montré ne laisse aucun doute sur la présence, dans cette application, d'un tableau de structures (ce qui nécessite un degré de connaissances et de compréhension assez "évolué").
- je ne parviens alors pas à comprendre que tu ne saches pas résoudre une difficulté de bas étage, alors même que, de surcroît, je t'avais "mâché" le travail. Je parviens encore moins à comprendre que tu aies pu présenter un code (celui que tu as montré) qui non seulement ne calcule (ni ne tend à calculer) ta valeur maximum, mais n'a en outre ni queue, ni tête, ni la moindre "raison".

EDIT 2 : Tiens ! de loin (de très très loin) et sans même voir ton application... juste en devinant ===>>>
Tu devrais également ouvrir ton aide VB6 sur le mot Ubound (fonction Ubound) et lire.
Pourquoi te dis-je cela ? Devine (si l'appli est de toi et non copiée/collée, tu ne devrais avoir aucune difficulté à comprendre où, dans ton cas, utiliser cette fonction).
Bonne chance

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
7357
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 avril 2021
122
Bonjour,

comme ceci:




coller ton code ici:


ce qui donne ceci


et au final, c'est quand même plus lisible!


Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Salut le Pivert, le tuto montre les mêmes copies d’écran que les tiennes....
Au mouns avec toi il fait l’effort d’essayer, mais pas encore de cliquer sur « prévisualiser », pour vérifier s’il a réussi.
Messages postés
7357
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 avril 2021
122
Salut Wismeril, effectivement c'est la même chose que le tuto, j'ai mis le minimum de texte avec simplement les images pour ne pas l'embrouiller. Cela n'a pas donné le résultat escompté, j'en suis désolé.
Pour ce qui est du code, il fonctionne correctement. Il a du oublier de tout nous dire pour avoir un 0 comme résultat.
Voilà mon constat, ce n'est pas trop motivant!

@+ Le Pivert
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Ha mais depuis le depart le code de vb95 est focntionnel, c’est que dans sa liste y’a pas d’entier, puisque CInt() retourne type incompatible, et peut être même pas de nombres....
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137 >
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021

Salut Whis
Cint retournait "type incompatible" car les valeurs dans la Listbox sont des chaines de caractères ( Cint fait la conversion d'une valeur numérique de type Long en Integer par exemple )
dim Valeur as Long
Valeur = 355
Dim Valint as Integer
Valint = Cint(Valeur) ' là c'est ok

Dim StrValeur as String
StrValeur = "355"
Valint= Val(StrValeur) ' là c'est Ok avec Val
Valint = Cint(StrValeur) ' là c'est type incompatible

C'est Val qui transforme une chaine de caractères numériques en une valeur numérique
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
Bonjour tototoche1748
Tu y es presque car dans ton message précédent il y a la balise de code de fermeture
</code>
Donc reprenons
1) tu positionnes ton curseur à l'endroit où doit figuré ton code dans ton message
2) tu cliques le "triangle noir inversé" ( le cinquième icône dans la barre en haut du message) et tu cliques sur ton langage ( basic pour toi )
3) il apparait alors ceci à la position du curseur

ce sont les 2 balises de code
Maintenant que les balises de code sont là où faut-il taper ou coller son code ?
tu positionnes ton curseur entre ces 2 symboles >|< ( où se trouve le trait ) et tu n'as plus qu'à taper où coller ton code
Une fois ceci fait tu peux vérifier si ton message est correct en cliquant sur "Prévisualiser" ( tu verras ton message tel qu'il apparaîtra sur le forum )
ensuite "Valider" envoie réellement le message sur le forum

Donc pour le code que je te suggère
Dim lmax as Integer, valeur as Integer     
Dim i As Integer
lmax = Val(List10.List(0)) ' valeur premier élément de la liste
For i = 1 To List10.ListCount - 1
    valeur = Val(List10.List(i)) ' valeur élément suivant
    If valeur > lmax Then
        ' si valeur > lmax cette valeur devient lmax
        lmax = valeur
    End If
Next i
' affiche lmax dans la TextBox
Text1.Text = Cstr(lmax)


Remarques les décalages pour les blocs For …. Next et If ….. End If

Autre chose : tu viens de déposer ton message sur le forum et tu t'aperçois que tu as fait une erreur . Inutile de retaper un nouveau message . A droite de ton message apparaît un "crayon" et si tu vas dessus cela t'indique "Modifier" . Tu cliques dessus et tu peux modifier ton message . Une fois cela fait tu peux le prévisualiser et si tout est correct le valider et il sera de nouveau sur le forum .
Si le "crayon" n'apparaît plus c'est que le message ne peut plus être modifier .
En espérant que tu y arrives car sinon j'abandonne
voici ligne de code renvoie valeur 0
Dim i As Integer
Dim a As Integer

For i = 0 To List2.ListCount - 1
List2.AddItem Trim(tab_capsule(i).Numero_Capsule)
a = a + List2.TopIndex
Text1 = a

Next
Messages postés
25
Date d'inscription
lundi 24 décembre 2018
Statut
Membre
Dernière intervention
18 février 2019

ok je suis revenu
voici mon code desole mais je n est pas la valeur maxi

'traite affichage valeur maxi
Dim lmax As Integer
Dim b As Integer
For b = 0 To List10.ListCount - 1
If IsNumeric(List10.List(b)) Then
b = b + List10.List(b)
Text1 = lmax
cela fait des années que je n ai plus pratique Age 71 ans il y a bien maintenant 10 ans
cordialement
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
Bonsoir !
Qu'en est-il de ta dernière demande : https://codes-sources.commentcamarche.net/forum/affich-10094122-tri-d-une-list-box
?
De plus déterrer un sujet vieux de 4 ans n'a aucun intérêt !
As-tu suivi les conseils de ucfoutu ?
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Bonsoir,
comme es tu passé à VB.Net, si oui alors ce qui est a été écrit par Uc est encore faisaible, mais il y a maintenant plus simple.
bonjour
VB 6 me convient ce que je veux se sont des réponses concernant vb6 et non pas de me conseille de passe en VB net etc.
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Bonjour
Précédemment tu as ecrit que tu allais essayer VB.net.
On aurait prendre cela pour argent comptant et te faire une réponse en VB.Net.
Réponse qui n’aurait pas marché en vb6.

C’est mieux de demander confirmation avant non?
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
Bonjour !
En VB 6 et en se basant sur ton code que voici

'traite affichage valeur maxi
Dim lmax As Integer
Dim b As Integer
For b = 0 To List10.ListCount - 1
If IsNumeric(List10.List(b)) Then
b = b + List10.List(b)
Text1 = lmax


si on le corrige cela donne ceci ( en supposant que la listbox ne contient que des valeurs entières de type Integer
' on prend la première valeur de la listbox comme max
Dim lmax as Integer = List10.List(0)) 
' on parcourt la Listbox à partir du second élément
For i = 1 to  List10.ListCount - 1 
' si supérieur à lmax on a un nouveau lmax 
    If Cint(List10.List(i)) > Lmax Then
            lmax = Cint(List10.List(i))
    End if
Next i
' lmax dans la Textbox
Textbox1.Text = Cstr(lmax)


possible qu'il y ait une erreur : cela fait 12 ans que je ne fais plus de VB 6

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
bonjour vb
voici mon code écrit suivant tes conseils
Dim lmax As Intèger
Dim b As Integer
For b = 0 To List10.ListCount - 1
   If CInt(List10.List(b)) > lmax Then
            lmax = CInt(List10.List(b))
    End If
 Next
Text1.Text = CStr(lmax)

mais hélas ne marche pas par contre en suivant les conseils de ucfoutu et en écrivant ceci
' Déclare la variable.
   'Dim X
   ' Obtient l'index en cours.
  ' X = List10.TopIndex
   ' Redéfinit le premier élément.
  'List10.TopIndex = List10.TopIndex + 5
   'If List10.TopIndex = X Then List10.TopIndex = 0
   'Text1 = List10


EDIT : Ajout des balises de code (jordane)

on inscrit bien la valeur de la listbox mais c est la valeur sur laquelle on clique qui s affiche est non pas la valeur maxi
encore merci de répondre a mon problème cela n est surement pas marrant pour vous qui êtes surement plus doué que moi que d essyer de regler un probleme alors que vous ne pratiquer plus en vb6
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
bonsoir !
As-tu lu les commentaires dans le code que je t'a proposé au message n° 11 ?
Le premier commentaire est celui-ci : "on prend la première valeur de la listbox comme max"
Lorsque que l'on veut comparer une liste il faut d'abord prendre un élément comme base ( ici le premier élément de la liste)
Ensuite on parcourt la liste à partir du second élément jusqu'à la fin de la liste : pour chaque élément on le compare à l'élément de base et si cet élément est supérieur il devient l'élément de base de la comparaison !
A la fin du parcours de la liste on a la valeur maximale dans l'élément de base !
S tu n'arrives pas à comprendre cette gymnastique logique je ne peux rien de plus pour toi !
De la part d'un vieux de la vieille aussi !
En passant regardes tout en haut le premier message de ucfoutu il y a quatre ans : il répète mot pour mot ce que je viens de dire
Et quand on ne comprend pas un mot clé du langage VB6 on ouvre l'aide ( touche F1 si mes souvenirs sont bons ) si cette aide est installée évidemment ( ce qui devrait être le cas avec un VB6 officiel )
bonjour
oui l aide est installe oui j ai regarde
je vais recommencer mais hier cela ne marchait pas
re bonjour VB95

Private Sub List10_Click()
Dim lmax As Integer
Dim b As Integer
For b = 1 To List10.ListCount - 1
If CInt(List10.List(b)) > lmax Then
lmax = CInt(List10.List(b))
End If
Next
Text1.Text = CStr(lmax)

cela ne marche pas
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Bonjour

Pour poster un code lisible ( tu as remarqué nous qui sommes bénévoles pour t’aider on fait cet effort....) merci de lire de d’appliquer ce qui est décrit sur le.lien suivant https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Pour ton problème, pourquoi t’obstines tu à reposter systématiquement ton code qui ne marche pas, alors que VB t’as posté un code qui marche?
' on prend la première valeur de la listbox comme max
Dim lmax as Integer = List10.List(0))
' on parcourt la Listbox à partir du second élément
For i = 1 to List10.ListCount - 1
' si supérieur à lmax on a un nouveau lmax
If Cint(List10.List(i)) > Lmax Then
lmax = Cint(List10.List(i))
End if
Next i
' lmax dans la Textbox
Textbox1.Text = Cstr(lmax)
1234567891011


Private Sub List10_Click()
Dim lmax As Integer
Dim b As Integer
For b = 1 To List10.ListCount - 1
If CInt(List10.List(b)) > lmax Then
lmax = CInt(List10.List(b))
End If
Next
Text1.Text = CStr(lmax

je pense que le code est ressemblant ou alors je deviens fou
mais cela ne marche pas
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Quand tu feras l’effort de présenter un code lisible (je t’ai mis le lien plus haut), on t’expliqueras en quoi ces 2 codes sont différents
bonjour pour la énième fois

Private Sub List10_Click()
Dim lmax As Integer
Dim b As Integer
lmax = 0
For b = 1 To List10.ListCount - 1
If (List10.List(b)) >= lmax Then
lmax = (List10.List(b))
Text1.Text = lmax
End If
Next

End Sub
voici mon code indique bien la valeur maxi mais indique type incompatible a la ligne if
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
Regardes bien !
Private Sub List10_Click() 
Dim lmax As Integer 
Dim b As Integer 
lmax = 0 
For b = 1 To List10.ListCount - 1 
   If (List10.List(b)) > lmax Then ' ici supérieur à suffit
      lmax = (List10.List(b)) 
      Text1.Text = lmax ' cette ligne est mal placée
   End If 
Next 


La variable lmax n'est pas définie comme étant la valeur du premier élément de la liste : tu le définis à 0 tout bonnement !
Il ne manque pas un mot derrière le If et avant la parenthèse ?
Whismeril t'a donné un lien pour présenter un code lisible et correctement indenté : tu pourrais faire l'effort de le lire et de le mettre en application !
De plus cette ligne
Text1.Text = lmax 
bien que fonctionnant est incorrecte ! Où est le
Cstr(lmax)
qui transforme lmax qui est une valeur de type Integer en chaine de caractères ? de plus cette ligne est mal placée
en code informatique la rigueur est indispensable

'valeur maxi
Dim lmax As Integer
'Dim b As Integer
lmax = 0
For b = 1 To List10.ListCount - 1
If CInt(List10.List(b)) > lmax Then
lmax = CInt(List10.List(b))
Text1.Text = CStr(lmax)
End If
Next
voila meme en mettant cint devant parenthese cela ne marche toujours pas
oui tu dois en avoir marre mais je m excuse maintenant si tu veux tu arreter de me corriger
je le comprendrai
encore merci pour tout
un pas doue
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
Dim lmax as Integer = Cint(List10.List(0)) 
For i = 1 to  List10.ListCount - 1 
    If Cint(List10.List(i)) > Lmax Then
            lmax = Cint(List10.List(i))
    End if
Next i
Text1.Text = Cstr(lmax)


en recopiant ce code mot pour mot avec un copier- coller peux-tu me dire si il fonctionne correctement et dans le cas contraire ce qui cloche !

Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Ta première ligne ne marche pas en VB6, il faut le faire en 2
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137 >
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021

Merci Whis !
Etourderie j'ai oublié le Cint : c'est corrigé
Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
C'est pas ce à quoi je pensais, de mémoire tu ne peux pas initier et affecter sur la même ligne.
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
Code corrigé pour totoche1748
Merci Whis : Vb6 est bien loin pour nous !
Et on ne peut même pas tester nous-même : je n'ai plus VB 6 depuis pas mal d'années
Dim lmax as Integer
lmax = Cint(List10.List(0)) 
For i = 1 to  List10.ListCount - 1 
    If Cint(List10.List(i)) > Lmax Then
            lmax = Cint(List10.List(i))
    End if
Next i
Text1.Text = Cstr(lmax)


Messages postés
15886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 avril 2021
539
Je ne l'ai jamais eu à la maison, et au boulot, il est sur un vieux PC stocké au fond d'un placard. Mais franchement après avoir lu un truc du genre
le lien je l'ai lu mais je m'en fiche
(ça devrait être dans le message 22) j'ai pas eu envie d'aller le chercher ce PC.
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021
137
message 22 qu'il a dù effacé lol !
Messages postés
32223
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 avril 2021
346 >
Messages postés
2425
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
27 avril 2021

J'ai effacé le message 22 ..... vu qu'il n'a toujours pas compris comment mettre son code avec les balises de code....
Visiblement il n'a que faire des différentes remarques que vous lui avez déjà fait... donc si il ne fait pas d'effort... ses messages ne resteront pas longtemps sur le site... :-)