Résultat d'une ListBox négatif
Guy73000 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour.
Je voudrai constituer une liste de 40000 noms. J'utilise VB6 Entreprise.
Dans une feuille standard, je crée une ListBox appelée Lst1.
Je crée un bouton appelé Cmd1.
Je crée une zone de texte appelé Txt1 et une variable de contrôle N as long.
Voici un exemple.
Dans la Sub Cmd1()
Dim N As Long
For N=0 to 40000
Lst1.AddItem N
next N
End Sub
Dans la Sub Lst1 ()
Txt1.Text=Lst1.ListIndex
End Sub
Une fois la liste affichée je déroule jusqu'à l'adresse affichée 39900 par exemple.
Je click sur la valeur 39900 pour que celle-ci soit écrite dans Txt1.
Le résultat n'est pas 39900 mais -25636.
Comment rendre le résultat positif c'est à dire 39900 et non -25636.
Merci de votre réponse, bonne fin de journée.
- Résultat d'une ListBox négatif
- Resultat foot - Télécharger - Vie quotidienne
- Negatif telephonique - Guide
- Lexer resultat - Télécharger - Sport
- Résultat loto bulgarie autriche azerbaïdjan ✓ - Forum Loisirs / Divertissements
- Resultat loto d'aujourd'hui rdc ✓ - Forum Excel
5 réponses
En VB6/VBA, le type par défaut est int, hors c'est en 16 bits (héritage).
Donc les valeurs c'est entre 0-32767 puis ça passe à -32768 pour revenir à -1.
Pour passer en positif, il faut stocker la valeur dans un long et faire +65536.
En code :
long MaVariable MaVariable=index MaVariable=MaVariable+65536
bonjour,
peut-être
Const d As Long = 2 ^ 16 Dim x As Long x = (-25636 + d) Mod d Debug.Print x
Bonjour
vb6 est obsolète depuis environ 20 ans. Ce qui veut dire notamment que de nombreux composants ne fonctionnent plus sur W10, j'ai même pas essayé avec W11.
VB.Net "son remplaçant" travaille en 32 bits voire en 64bits.
Visual Studio comprend deux versions gratuites
- visual studio community, qui est gratuit pour les petite entreprises sous conditions
- visual studio code
Tu ne rencontrerais pas ce type de problèmes avec VN.Net
Cela étant, VB est vraiment différent de VB6 contrairement à ce que son nom peut laisser croire.
Il faudra donc apprendre un nouveau langage.
A ce compte là, réfléchir à d'autres langages gratuits encore d'actualité serait de toute façon à faire
- python (réputé facile à apprendre, grosse communauté, mais perso j'aime pas, car il donne des défauts, comme vb6 d'ailleurs)
- java
- c# (vrai langage .Net, VB.Net c'est du c# déguisé en VB)
- rust
- etc...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Henry.
Merci pour l'idée.
Ca marche, si cela peu servir à quelqu'un, voici comment j'ai procédé.
Dans la Sub Lst1()
Txt1.Text = Lst1.ListIndex
If (Lst1.ListIdex <0) Then
Txt1.Text=(Lst1.ListIdex+65536)
End if
Par contre, le même problème recommence pour les saisies supérieures à 65536.
Si je fais une boucle à 70000 et que sélectionne l'adresse 66240 la réponse est 704.
Bonne fin de journée.