Résultat d'une ListBox négatif

Fermé
Guy73000 Messages postés 7 Date d'inscription dimanche 12 février 2023 Statut Membre Dernière intervention 24 mars 2023 - 12 févr. 2023 à 17:52
Guy73000 Messages postés 7 Date d'inscription dimanche 12 février 2023 Statut Membre Dernière intervention 24 mars 2023 - 13 févr. 2023 à 17:01

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.

A voir également:

5 réponses

NHenry Messages postés 15151 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 septembre 2024 333
12 févr. 2023 à 18:13

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

0
Guy73000 Messages postés 7 Date d'inscription dimanche 12 février 2023 Statut Membre Dernière intervention 24 mars 2023
13 févr. 2023 à 17:01

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.

0
Guy73000 Messages postés 7 Date d'inscription dimanche 12 février 2023 Statut Membre Dernière intervention 24 mars 2023
12 févr. 2023 à 18:18

Merci Beaucoup Henry, c'est sympa.

Je vais voir ça et je vous tiens au courant.

Bonne soirée.

0
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 Ambassadeur 1 536
12 févr. 2023 à 18:21

bonjour,

peut-être

Const d As Long = 2 ^ 16
Dim x As Long
x = (-25636 + d) Mod d
Debug.Print x
0
Guy73000 Messages postés 7 Date d'inscription dimanche 12 février 2023 Statut Membre Dernière intervention 24 mars 2023
13 févr. 2023 à 16:19

Bonjour.

Merci de ta réponse c'est sympa.

Je vais essayer ça.

Bonne fin de journée.

0
Whismeril Messages postés 19144 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 septembre 2024 919
12 févr. 2023 à 18:33

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...

0

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

Posez votre question
Guy73000 Messages postés 7 Date d'inscription dimanche 12 février 2023 Statut Membre Dernière intervention 24 mars 2023
13 févr. 2023 à 16:17

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.

0