Valeur maxi

Résolu
totoche - 21 févr. 2015 à 08:50
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
- 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

36 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 21/02/2015 à 08:58
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
2
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
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 21/02/2015 à 10:31
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
1
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 22/02/2015 à 16:34
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
1
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 23/02/2015 à 07:06
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
1

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

Posez votre question
cs_Le Pivert
Messages postés
7745
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 mai 2022
129
11 févr. 2019 à 11:54
Bonjour,

comme ceci:




coller ton code ici:


ce qui donne ceci


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


1
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
11 févr. 2019 à 14:38
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.
0
cs_Le Pivert
Messages postés
7745
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 mai 2022
129
11 févr. 2019 à 14:45
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
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
11 févr. 2019 à 15:12
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....
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151 > Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022

14 févr. 2019 à 21:24
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
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 11 févr. 2019 à 16:52
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
1
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
0
totoche1748
Messages postés
25
Date d'inscription
lundi 24 décembre 2018
Statut
Membre
Dernière intervention
18 février 2019

6 févr. 2019 à 11:33
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
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 6 févr. 2019 à 17:50
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 ?
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
6 févr. 2019 à 20:45
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.
0
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.
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
7 févr. 2019 à 15:49
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?
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 7 févr. 2019 à 14:18
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. 
0
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
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 7 févr. 2019 à 21:46
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 )
0
bonjour
oui l aide est installe oui j ai regarde
je vais recommencer mais hier cela ne marchait pas
0
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
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
8 févr. 2019 à 09:53
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?
0
' 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
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
8 févr. 2019 à 13:25
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
0
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
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 8 févr. 2019 à 16:26
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

0
'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
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 8 févr. 2019 à 17:24
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 !

0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
8 févr. 2019 à 17:05
Ta première ligne ne marche pas en VB6, il faut le faire en 2
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151 > Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022

8 févr. 2019 à 17:26
Merci Whis !
Etourderie j'ai oublié le Cint : c'est corrigé
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
8 févr. 2019 à 17:55
C'est pas ce à quoi je pensais, de mémoire tu ne peux pas initier et affecter sur la même ligne.
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié le 8 févr. 2019 à 18:10
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)


0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
8 févr. 2019 à 18:20
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.
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
8 févr. 2019 à 18:52
message 22 qu'il a dù effacé lol !
0
jordane45
Messages postés
35474
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356 > vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022

8 févr. 2019 à 19:49
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... :-)
0