Arf!, Nz pose le problème d'icompatibilité de type et je
tente de l'expliquer.
Nz premet de remplacer des Chaines Nulles par ""(chaine vide) ou Zéro ou autre chose.
Il s'avère que Sql (la source de ta liste) remplace les Chaines Nulles par
"" systématiquement.
Donc quand on met
txtprixht = txtprixht + Nz(Me.lstoption.Column(2, Me.lstoption.ItemsSelected(I)), 0)
Il trouve une icompatibilité de type car on ajoute un nombre à
une chaine vide. (si le champ source est Nul)
La solution consisterait à mettre le Nz dans le rowsource (propriété Contenu)
de la liste en remplaçant Table.tarif_ht par Nz(Table.tarif_ht,0) dans la chaine sql.
Avec ça ce code fonctionne
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Private Sub lstoption_Click()
Me.txtoption = ""
Me.txtprixht = 0
For I = 0 To Me.lstoption.ItemsSelected.Count - 1
For J = 0 To Me.lstoption.ColumnCount - 1
Me.txtoption.SetFocus
Me.txtoption = Me.txtoption & " " & Nz(Me.lstoption.Column(J, Me.lstoption.ItemsSelected(I)), "")
Next J
Me.txtoption = Me.txtoption & vbCrLf
txtprixht = txtprixht + Me.lstoption.Column(2, Me.lstoption.ItemsSelected(I))
Next I
End Sub |
A moins que tu ne fixes définitivement une valeur par défaut au champ
de table tarif_ht.
Ça c'est pour le principe. Dans l'absolu le choix d'une TextBox ici est
très discutable car le résultat n'est franchement pas ergonomique ni
esthètique...
Il y a peut -être moyen d'éditer directement ta sélection sans passer
par cette textbox...
Partager