Valeur par defaut dans une listbox

Résolu
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 15 nov. 2010 à 12:55
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 1 déc. 2010 à 18:53
Bonjour,
J'ai dans un petit prog, une lisbox dont les valeurs vont de 0.00 a -1.5 par increments de 0.1 (0.0; -0.1; -0.2 ... etc...)
Cette listbox me permet se selectionner une valeur et faire des calculs avec cette valeur

Private Sub Command4_Click()
If List3.Text = "-0.0" Then
           Text48.Text = Format(CCur(Text45.Text) * (0#), "0.00")
           Text36.Text = Format((CCur(((Sqr((Text15.Text) + 4)) * Text27.Text) / 2) + Text35.Text), "0.00")
           Text46.Text = Format(CCur(((Text27.Text) + (CCur(Text37.Text)))), "0.00")
... etc

Je veux que par défaut (sans rien selectionner, la valeur prise soit "-1.0", j'ai fait :


Private Sub Command4_Click()
List3.Selected "-1.0" = True
If List3.Text = "-0.0" Then
           Text48.Text = Format(CCur(Text45.Text) * (0#), "0.00")
           Text36.Text = Format((CCur(((Sqr((Text15.Text) + 4)) * Text27.Text) / 2) + Text35.Text), "0.00")
           Text46.Text = Format(CCur(((Text27.Text) + (CCur(Text37.Text)))), "0.00")
... etc

Rien ne fonctionne .... ou est l'erreur svp ???

Merci

34 réponses

Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
19 nov. 2010 à 13:30
Bon, ca fonctionne presque ......
voila mon bout de code et le problème qui subsiste :
Dim valeur As Single
If List1.ListIndex = -1 Then
valeur = "-1"
Else
valeur = Val(List1.List(List1.ListIndex))
End If
If List1.ListIndex = 0 Then
   Text35.Text = Format(CCur(Text32.Text) * (0#), "0.00")
   Text38.Text = Format(CCur(Text3.Text), "0.00")
   Text43.Text = Format(CCur(((Sqr((Text36.Text) + 4)) * Text38.Text) / 2), "0.00")
   Text46.Text = Format(CCur(((Text38.Text) + (CCur(Text34.Text)))), "0.00")
   Text31.Text = Format(CCur(((Text43.Text) + (CCur(Text35.Text)))), "0.00")
End If
If List1.ListIndex = -0.1 Then
   Text35.Text = Format(CCur(Text32.Text) * (0.1), "0.00")
   Text38.Text = Format(CCur(Text3.Text), "0.00")
   Text43.Text = Format(CCur(((Sqr((Text36.Text) + 4)) * Text38.Text) / 2), "0.00")
   Text46.Text = Format(CCur(((Text38.Text) + (CCur(Text34.Text)))), "0.00")
   Text31.Text = Format(CCur(((Text43.Text) + (CCur(Text35.Text)))), "0.00")
End If
If List1.ListIndex = -0.2 Then
   Text35.Text = Format(CCur(Text32.Text) * (0.2), "0.00")
   Text38.Text = Format(CCur(Text3.Text), "0.00")
   Text43.Text = Format(CCur(((Sqr((Text36.Text) + 4)) * Text38.Text) / 2), "0.00")
   Text46.Text = Format(CCur(((Text38.Text) + (CCur(Text34.Text)))), "0.00")
   Text31.Text = Format(CCur(((Text43.Text) + (CCur(Text35.Text)))), "0.00")
End If
End sub


la valeur selectionnee par defaut est ok, par contre, si j'essaye d'en selectionner une autre a la souris, les calculs e sont pas fait et restent bloqués sur la valeur par defaut.

Question subsidiaire : le surlignage en bleu n'apparait pas sur la valeur par defaut, est ce possible de le faire apparaitre ????

Merci encore
0
Profil bloqué
19 nov. 2010 à 18:03
Salut attila54

1)

Dim valeur As Single ' variable qui contient la valeur
If List1.ListIndex = -1 Then
valeur = "-1" ' valeur par défaut
Else
valeur = Val(List1.List(List1.ListIndex)) ' valeur sélectionnée
End If

Arrivé ici tu as la valeur sélectionnée ou celle par défaut dans la variable valeur
Pourquoi n'utilises-tu point celle-ci dans tes calculs qui suivent?
Text35.Text = Format(CCur(Text32.Text) * (0#), "0.00")
Text38.Text = Format(CCur(Text3.Text), "0.00")
Text43.Text = Format(CCur(((Sqr((Text36.Text) + 4)) * Text38.Text) / 2), "0.00")
Text46.Text = Format(CCur(((Text38.Text) + (CCur(Text34.Text)))), "0.00")
Text31.Text = Format(CCur(((Text43.Text) + (CCur(Text35.Text)))), "0.00")

List1.Listindex ne te sert ensuite plus à rien une fois la valeur déterminée

2)

Autre chose : donnes un nom qui signifie quelque chose à toutes tes zones de texte. Ton code sera plus clair
Exemple : Prixarticle.Text "3.52" est plus parlant que Text35.text "3.52" ( ici tu sais que cette zone de texte contient le prix d'un article)

3)

Si tu ne sélectionnes rien le sur lignage en bleu ne peut pas apparaître



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.

GRENIER Alain
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
20 nov. 2010 à 19:06
Bonsoir Galain,
merci pour ces précisions , je prends de suite en compte tes remarques sur les noms des Textbox.
Je me demande si single est adapté a mon cas car pour d'autres listes, mes valeurs varient de 0.5 en 0.5 (-7.00; -6.5 ...etc ...)
je comprends bien tout le debut :
Dim valeur As Single ' variable qui contient la valeur
If List1.ListIndex = -1 Then
valeur = "-1" ' valeur par défaut
Else
valeur = Val(List1.List(List1.ListIndex)) ' valeur sélectionnée
End If 

je comprends aussi que ma variable "valeur" comprend soit la valeur par défaut, soit celle que je sélectionne.
Ce que je ne comprends pas, surement par manque de pratique (seulement 1 mois et demi de VB6, on m'a refilé ce projet avec 3 mois pour le réaliser alors que je suis admin systèmes et absolument pas développeur ...) c'est justement comment, d'un point de vue code, utiliser celle-ci dans tes calculs qui suivent. La syntaxe quoi.

En tout cas merci de ton aide précieuse, les débutants sont souvent un peu dénigrés et ici, ce n'est pas le cas.
0
Profil bloqué
21 nov. 2010 à 10:03
Salut Attila54

1) Single me parait adapté : les variables numériques avec virgules sont soit de type single soit de type double ou encore soit de type currency
Tes valeurs allant par pas de 0.5 ne demandent pas un précision extrême ne connaissant pas la suite du code

2)Les calculs qui suivent. Je pense que la variable valeur te sert dans ces fameux calculs sinon pourquoi la sélectionner ?
Ta listbox doit contenir les différentes valeurs et tu dois en sélectionner une avec de cliquer sur le Bouton de commande ( sauf si tu prends celle par défaut)

Un exemple : ta listbox contient des nombres de 1 à 10. L'utilisateur sélectionne le nombre d'articles qu'il veut acheter. Il connait le prix de cet article : 25,40 €
Le code devient

Dim nombre As Single ' variable qui contient la valeur
If List1.ListIndex = -1 Then
nombre = 1 ' valeur par défaut ( 1 article acheté)
Else
nombre = Val(List1.List(List1.ListIndex)) ' nombre sélectionnée
Prixtotal.Text = Str$(25.40 * nombre) & "€" ' on sert ici de la varible nombre : on remplit la zone de texte Prixtotal ( Str$ transforme une valeur numérique en chaine de caractères)
Dans cet exemple si nombre vaut 2 Prixtotal.Text affichera 50.80 € , si nombre vaut 3 Prixtotal = 76.20€ , etc ....

3)
Dans le bout de code que je t'ai envoyé il y a une petite erreur
Remplace la ligne
valeur = "-1" ' valeur par défaut
par
valeur = -1 ' valeur par défaut

valeur étant un Single il n'accepte pas "-1" car les guillemets indique une chaine de caractères



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.

GRENIER Alain
0

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

Posez votre question
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
21 nov. 2010 à 10:55
gros merci a toi, je vais adapter cela a mes différentes valeurs de listbox des lundi
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
22 nov. 2010 à 10:04
bon decidement je n'y comprends rien de chez rien
Dim nombre As Single ' variable qui contient la valeur 
If List1.ListIndex = -1 Then 
nombre = 1 ' valeur par défaut (1 article acheté)
Else

m'indique bien que par défaut, ma valeur prise en compte sera -1, autrement ....
Jusque la pas de problème; ensuite c'est pour selectionner une valeur de la liste que je plante tout. Je pensais qu'en faisant
Dim nombre As Single ' variable qui contient la valeur 
If List1.ListIndex = -1 Then 
nombre = 1 ' valeur par défaut (1 article acheté)
Else
   If nombre = -0.1 then
      TextXX.Text = .....
      TextYY.Text = ....
   else
   If nombre = -0.2 then
      TextXX.Text = .....
     TextYY.Text = ....
   end if
end if
end sub

tout fonctionnerait ..... ben rien de rien je ne peux rien calculer à la main.
pas facile pour un gros comme moi
0
Profil bloqué
22 nov. 2010 à 18:31
Dim nombre As Single ' variable qui contient la valeur
If List1.ListIndex = -1 Then
nombre = -1 ' valeur par défaut
Else
nombre = Val(List1.List(List1.ListIndex)) ' valeur sélectionnée
End If 


Là tu as la valeur : soit celle par défaut si tu ne sélectionnes rien ou celle que tu as sélectionnée
Il faut bien comprendre que si tu veux sélectionner une valeur celle-ci doit être sélectionnée avant de cliquer sur le bouton de commande des calculs
Quand tu cliques sur ton bouton de commande : valeur contient grâce au code précédent la valeur servant pour les calculs

Que viennent faire les If nombre - 0.1 then ............. If nombre -0.2 etc........ ?
Les calculs à faire sont-ils différents pour chaque valeur ?
Si tu expliquais les calculs que tu as à faire je pourrais certainement mieux t'aider.

Je ne peux pas être plus clair. Franchement si tu as 3 mois pour faire ton projet dis à ton patron que tu n'en es pas capable car tu me sembles bien mal barré.
bon courage quand même




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.

GRENIER Alain
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
22 nov. 2010 à 19:27
en fait, chaque sélection ou la valeur par défaut fait des calculs différents oui car une textbox, entre autre, varie en fonction de la valeur de mon nombre sélectionné. Concrètement :
voila les valeurs de textbox

Text35.Text = Format(CCur(Text32.Text) * (0#), "0.00")
Text38.Text = Format(CCur(Text3.Text), "0.00")
Text43.Text = Format(CCur(((Sqr((Text36.Text) + 4)) * Text38.Text) / 2), "0.00")
Text46.Text = Format(CCur(((Text38.Text) + (CCur(Text34.Text)))), "0.00")
Text31.Text = Format(CCur(((Text43.Text) + (CCur(Text35.Text)))), "0.00")


donc par exemple :

si ma valeur selectionnee est -1 alors
Text35.Text = Format(CCur(Text32.Text) * (0#), "0.00")
Text38.Text = Format(CCur(Text3.Text), "0.00")
Text43.Text = Format(CCur(((Sqr((Text36.Text) + 4)) * Text38.Text) / 2), "0.00")
Text46.Text = Format(CCur(((Text38.Text) + (CCur(Text34.Text)))), "0.00")
Text31.Text = Format(CCur(((Text43.Text) + (CCur(Text35.Text)))), "0.00")

mais si ma valeur sélectionnée est -1.5 alors
Text35.Text = Format(CCur(Text32.Text) * (1.5), "0.00")
Text38.Text = Format(CCur(Text3.Text), "0.00")
Text43.Text = Format(CCur((2(Sqr((Text34.Text) + 4)) * Text36.Text) / 2), "0.00")
Text46.Text = Format(CCur(((Text38.Text) + (CCur(Text34.Text)))), "0.00")
Text31.Text = Format(CCur(((Text43.Text) + (CCur(Text35.Text)))), "0.00")


les Textbox 35 et 43 ne font pas les mêmes calculs et c'est ca qui me perturbe (je les ai renommées depuis, c'est vraiment plus clair

pour information, je ne pense pas être trop mal barré, il me reste un mois pour que CE calcul fonctionne, après, ce n'est plus que du "design" et la, j' ai encore 5 mois de plus ...
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
24 nov. 2010 à 13:01
tout a fonctionné du premier coup, alors la chapeau bas ...
je ne sais pas pourquoi mais cette syntaxe, je l'ai comprise beaucoup mieux que la precedante.
Encore mille merci a toi pour ton aide et ta disponibilité
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
24 nov. 2010 à 13:33
euh, un tout petit bemol ..... si la valeur par defaut n'est pas -1 mais 6.5 cela ne fonctionne pas (est ce du a la decimale ?)
merci
0
Profil bloqué
24 nov. 2010 à 18:12
Salut Attila54

Le fait que c'est une décimale n'a rien à voir
Si tu changes la valeur par défaut il faut modifier la ligne de code

[code=vb]Dim nombre As Single ' variable qui contient la valeur
If List1.ListIndex = -1 Then
nombre = -1 ' valeur par défaut à modifier si nécessaire
Else
nombre = Val(List1.List(List1.ListIndex)) ' valeur sélectionnée
End If
Select case nombre
Case -1
Ton calcul pour cette valeur
Case -1.5
Ton calcul pour cette valeur
Case ......

Case .......
End Select[code=vb]

Même mieux
Pourquoi ne pas faire une bouton de commande qui te demande d'entrer la valeur par défaut au cas où celle-ci peut être différente

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.

GRENIER Alain
0
Profil bloqué
24 nov. 2010 à 18:15
Autre chose : si tu fais un bouton de commande pour la valeur par défaut il faut que celle-ci existe dans la listbox évidemment


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.

GRENIER Alain
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
24 nov. 2010 à 19:06
eh ben en fait, il s'agit d'une seconde liste qui ne comporte pas les mêmes valeurs et fait le même genre de calculs. Elle s'appelle List2 et comporte les valeurs (-6.5;-6.6;-6.7;-6.8;-6.9;-7.00)
j'ai donc fait :
Dim nombre As Single ' variable qui contient la valeur
If List2.ListIndex = -6.5 Then
nombre = -6.5 ' valeur par défaut à modifier si nécessaire
Else
nombre = Val(List2.List(List2.ListIndex)) ' valeur sélectionnée
End If
Select case nombre
Case -6.6
mon calcul pour cette valeur
Case -6.7
mon calcul pour cette valeur
Case ......

Case -7.0
End Select[code=vb] 


et rien ne se met en route. J'ai pensé qu'il pouvais y avoir un souci dans ce morceau (le chiffre en rouge)
If List2.ListIndex = -6.5 Then
nombre = -6.5 ' valeur par défaut à modifier si nécessaire

et j'ai essayé d'autres valeurs mais sans succès
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
1 déc. 2010 à 18:53
a priori cela fonctionne maintenant, quelques blocages parfois je ne sais pas trop pourquoi mais ca fonctionne.
Encore merci pour tout
0
Rejoignez-nous