Valeur maxi [Résolu]

- - Dernière réponse : vb95
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
- 14 févr. 2019 à 21:24
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
Afficher la suite 

Votre réponse

20/36 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
2
Merci
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

Dire « Merci » 2

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 117 internautes nous ont dit merci ce mois-ci

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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
1
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
1
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
1
Merci
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
Commenter la réponse de ucfoutu
Messages postés
5805
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 février 2019
79
1
Merci
Bonjour,

comme ceci:




coller ton code ici:


ce qui donne ceci


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


Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
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.
cs_Le Pivert
Messages postés
5805
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 février 2019
79 -
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
Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
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....
vb95
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60 > Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
-
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
Commenter la réponse de cs_Le Pivert
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60
1
Merci
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
Commenter la réponse de vb95
0
Merci
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
Commenter la réponse de totoche
Messages postés
23
Date d'inscription
lundi 24 décembre 2018
Dernière intervention
16 février 2019
0
Merci
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
Commenter la réponse de totoche1748
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60
0
Merci
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 ?
Commenter la réponse de vb95
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332
0
Merci
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.
Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
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?
Commenter la réponse de Whismeril
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60
0
Merci
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. 
Commenter la réponse de vb95
0
Merci
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
vb95
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60 -
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 )
Commenter la réponse de totoche1748
0
Merci
bonjour
oui l aide est installe oui j ai regarde
je vais recommencer mais hier cela ne marchait pas
Commenter la réponse de totoche1748
0
Merci
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
Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
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?
Commenter la réponse de totoche1748
0
Merci
' 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
Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
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
Commenter la réponse de totoche1748
0
Merci
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
Commenter la réponse de totoche1748
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60
0
Merci
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

Commenter la réponse de vb95
0
Merci
'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
Commenter la réponse de totoche1748
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60
0
Merci
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 !

Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
Ta première ligne ne marche pas en VB6, il faut le faire en 2
vb95
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60 > Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
-
Merci Whis !
Etourderie j'ai oublié le Cint : c'est corrigé
Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
C'est pas ce à quoi je pensais, de mémoire tu ne peux pas initier et affecter sur la même ligne.
Commenter la réponse de vb95
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60
0
Merci
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)


Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
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.
vb95
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
60 -
message 22 qu'il a dù effacé lol !
jordane45
Messages postés
24543
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 février 2019
362 > vb95
Messages postés
1794
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 février 2019
-
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... :-)
Commenter la réponse de vb95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.