Résultat d'une ListBox négatif
Guy73000 Messages postés 7 Statut Membre -
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.
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 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.
-
-
Merci Beaucoup Henry, c'est sympa.
Je vais voir ça et je vous tiens au courant.
Bonne soirée.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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.
Merci de ta réponse, c'est gentil.
Oui! Je sais, mais pour le peu que j'ai à faire il me convient.
J'ai remarqué que ce problème n'existait pas avec le VB d'Exel.
A vrai dire j'ai un peu la flemme d'apprendre un nouveau langage.
Bonne fin de journée.