OVH Cloud OVH Cloud

Problème de valeurs en texte

11 réponses
Avatar
Linebaker
Bonsoir,

À l'aide d'un USF, j'ajoute des valeurs des les cellules. Le tout va bien.

Avec un 2e USF pour corriger ou ajouter des valeurs, les valeurs non modifiées se remettent en mode texte ? Comment faire qu'elles restent en nombre ce qui fausse mes calculs.

Voici une partie du code :
If OptionButton1 = True Then
ActiveCell.Offset(4, 0).Value = TextBox1.Value
ActiveCell.Offset(5, 0).Value = TextBox2.Value
ActiveCell.Offset(6, 0).Value = TextBox3.Value
ActiveCell.Offset(7, 0).Value = TextBox4.Value
ActiveCell.Offset(8, 0).Value = TextBox5.Value
ActiveCell.Offset(9, 0).Value = TextBox6.Value
ActiveCell.Offset(10, 0).Value = TextBox7.Value
ActiveCell.Offset(11, 0).Value = TextBox8.Value
ActiveCell.Offset(12, 0).Value = TextBox9.Value
...

Merci

10 réponses

1 2
Avatar
Jacky
Bonjour
Par définition un 'TexBox' retourne du 'Texte'
Essaye...
ActiveCell.Offset(4, 0).Value = CDbl(TextBox1.Value)
--
--
Les cellules de destnation au format standard ou nombre
Salutations
JJ
Linebaker a exposé le 04/07/2016 :
Bonsoir,
À l'aide d'un USF, j'ajoute des valeurs des les cellules. Le tout va bien.
Avec un 2e USF pour corriger ou ajouter des valeurs, les valeurs non
modifiées se remettent en mode texte ? Comment faire qu'elles restent en
nombre ce qui fausse mes calculs.
Voici une partie du code :
If OptionButton1 = True Then
ActiveCell.Offset(4, 0).Value = TextBox1.Value
ActiveCell.Offset(5, 0).Value = TextBox2.Value
ActiveCell.Offset(6, 0).Value = TextBox3.Value
ActiveCell.Offset(7, 0).Value = TextBox4.Value
ActiveCell.Offset(8, 0).Value = TextBox5.Value
ActiveCell.Offset(9, 0).Value = TextBox6.Value
ActiveCell.Offset(10, 0).Value = TextBox7.Value
ActiveCell.Offset(11, 0).Value = TextBox8.Value
ActiveCell.Offset(12, 0).Value = TextBox9.Value
..
Merci
Avatar
linebaker
Le mardi 05 Juillet 2016 à 00:13 par Jacky :
Bonjour
Par définition un 'TexBox' retourne du 'Texte'
Essaye...
ActiveCell.Offset(4, 0).Value = CDbl(TextBox1.Value)
--
--
Les cellules de destnation au format standard ou nombre
Salutations
JJ
Linebaker a exposé le 04/07/2016 :
Bonsoir,
À l'aide d'un USF, j'ajoute des valeurs des les cellules. Le tout va
bien.
Avec un 2e USF pour corriger ou ajouter des valeurs, les valeurs non
modifiées se remettent en mode texte ? Comment faire qu'elles restent
en
nombre ce qui fausse mes calculs.
Voici une partie du code :
If OptionButton1 = True Then
ActiveCell.Offset(4, 0).Value = TextBox1.Value
ActiveCell.Offset(5, 0).Value = TextBox2.Value
ActiveCell.Offset(6, 0).Value = TextBox3.Value
ActiveCell.Offset(7, 0).Value = TextBox4.Value
ActiveCell.Offset(8, 0).Value = TextBox5.Value
ActiveCell.Offset(9, 0).Value = TextBox6.Value
ActiveCell.Offset(10, 0).Value = TextBox7.Value
ActiveCell.Offset(11, 0).Value = TextBox8.Value
ActiveCell.Offset(12, 0).Value = TextBox9.Value
..
Merci
Bonjour,
J'avais oublié le CDBL. Effectivement maintenant le tout fonctionne.
Merci
Avatar
linebaker
Le mardi 05 Juillet 2016 à 01:02 par linebaker :
Le mardi 05 Juillet 2016 à 00:13 par Jacky :
> Bonjour
> Par définition un 'TexBox' retourne du 'Texte'
>
> Essaye...
> ActiveCell.Offset(4, 0).Value = CDbl(TextBox1.Value)
> --
> --
> Les cellules de destnation au format standard ou nombre
>
> Salutations
> JJ
>
>
> Linebaker a exposé le 04/07/2016 :
>> Bonsoir,
>>
>> À l'aide d'un USF, j'ajoute des valeurs des les cellules. Le tout va
>> bien.
>>
>> Avec un 2e USF pour corriger ou ajouter des valeurs, les valeurs non
>> modifiées se remettent en mode texte ? Comment faire qu'elles
restent
>> en
>> nombre ce qui fausse mes calculs.
>>
>> Voici une partie du code :
>> If OptionButton1 = True Then
>> ActiveCell.Offset(4, 0).Value = TextBox1.Value
>> ActiveCell.Offset(5, 0).Value = TextBox2.Value
>> ActiveCell.Offset(6, 0).Value = TextBox3.Value
>> ActiveCell.Offset(7, 0).Value = TextBox4.Value
>> ActiveCell.Offset(8, 0).Value = TextBox5.Value
>> ActiveCell.Offset(9, 0).Value = TextBox6.Value
>> ActiveCell.Offset(10, 0).Value = TextBox7.Value
>> ActiveCell.Offset(11, 0).Value = TextBox8.Value
>> ActiveCell.Offset(12, 0).Value = TextBox9.Value
>> ..
>>
>> Merci
Bonjour,
J'avais oublié le CDBL. Effectivement maintenant le tout fonctionne.
Merci
Bonjour,
Un autre problème survient. Si un des textbox de userform est vide, j'ai le message suivant : Erreur 13, Incompatibilité de type.
Comment corrigé ?
Merci
Avatar
isabelle
bonjour,
Le 2016-07-04 à 20:50, linebaker a écrit :
Un autre problème survient. Si un des textbox de userform est vide, j'ai le
message suivant : Erreur 13, Incompatibilité de type.
Comment corrigé ?
Merci

If OptionButton1 = True Then
For I = 1 To 9
If IsNumeric(Me.Controls("TextBox" & I).Value) Then
ActiveCell.Offset(3 + I, 0).Value = CDbl(Me.Controls("TextBox" & I).Value)
End If
Next
End If
isabelle
Avatar
MichD
Bonjour,
Un vieux fichier exemple ici :
http://www.cjoint.com/c/FGfcySGIi7i
MichD
Avatar
MichD
Le 04/07/16 à 22:23, isabelle a écrit :
bonjour,
Le 2016-07-04 à 20:50, linebaker a écrit :
Un autre problème survient. Si un des textbox de userform est vide,
j'ai le
message suivant : Erreur 13, Incompatibilité de type.
Comment corrigé ?
Merci

If OptionButton1 = True Then
For I = 1 To 9
If IsNumeric(Me.Controls("TextBox" & I).Value) Then
ActiveCell.Offset(3 + I, 0).Value = CDbl(Me.Controls("TextBox" &
I).Value)
End If
Next
End If
isabelle

Bonjour Isabelle,
La procédure que tu as soumise fonctionne seulement si les nombres
saisis dans les textbox sont des nombres entiers.
Habituellement, le réparateur décimal utilisé en français est la
virgule. La fonction de conversion Cdbl() fonctionne seulement avec le
séparateur décimal qui est défini dans le panneau de configuration de
Windows, soit, la virgule en français.
Lorsque l'usager effectue la saisie d'un nombre avec une section
décimale, comme nous sommes en VBA, la touche "point" du clavier
numérique insèrera toujours un point à moins d'utiliser la virgule du
clavier alphanumérique. Par conséquent, avec la virgule comme séparateur
décimal dans le panneau de configuration, on doit s'assurer que l'usager
utilise la virgule pour saisie la donnée à défaut de quoi la procédure
se plantera. Si l'ordinateur a le "Point" comme séparateur décimal, ta
procédure fonctionnera correctement. Le hic, comment s'assurer que tous
les ordinateurs qui ouvriront le fichier aient le point comme séparateur
décimal?
Sur un ordinateur utilisant la virgule comme séparateur décimal dans le
panneau de configuration Windows, si l'usager saisit un nombre avec un
"Point" dans un textbox, cette ligne de code retournera toujours FAUX et
par conséquent, la valeur ne sera jamais mise dans la cellule.
If IsNumeric(Me.Controls("TextBox" & I).Value) Then
Ce sera OK, si l'usager utilise la virgule.
MichD
Avatar
linebaker
Le lundi 04 Juillet 2016 à 23:17 par Linebaker :
Bonsoir,
À l'aide d'un USF, j'ajoute des valeurs des les cellules. Le tout va
bien.
Avec un 2e USF pour corriger ou ajouter des valeurs, les valeurs non
modifiées se remettent en mode texte ? Comment faire qu'elles restent en
nombre ce qui fausse mes calculs.
Voici une partie du code :
If OptionButton1 = True Then
ActiveCell.Offset(4, 0).Value = TextBox1.Value
ActiveCell.Offset(5, 0).Value = TextBox2.Value
ActiveCell.Offset(6, 0).Value = TextBox3.Value
ActiveCell.Offset(7, 0).Value = TextBox4.Value
ActiveCell.Offset(8, 0).Value = TextBox5.Value
ActiveCell.Offset(9, 0).Value = TextBox6.Value
ActiveCell.Offset(10, 0).Value = TextBox7.Value
ActiveCell.Offset(11, 0).Value = TextBox8.Value
ActiveCell.Offset(12, 0).Value = TextBox9.Value
...
Merci
Bonjour,
Voici pour le fichier.
Merci
Avatar
linebaker
Le mardi 05 Juillet 2016 à 06:01 par linebaker :
Le lundi 04 Juillet 2016 à 23:17 par Linebaker :
> Bonsoir,
>
> À l'aide d'un USF, j'ajoute des valeurs des les cellules. Le tout va
> bien.
>
> Avec un 2e USF pour corriger ou ajouter des valeurs, les valeurs non
> modifiées se remettent en mode texte ? Comment faire qu'elles restent en
> nombre ce qui fausse mes calculs.
>
> Voici une partie du code :
> If OptionButton1 = True Then
> ActiveCell.Offset(4, 0).Value = TextBox1.Value
> ActiveCell.Offset(5, 0).Value = TextBox2.Value
> ActiveCell.Offset(6, 0).Value = TextBox3.Value
> ActiveCell.Offset(7, 0).Value = TextBox4.Value
> ActiveCell.Offset(8, 0).Value = TextBox5.Value
> ActiveCell.Offset(9, 0).Value = TextBox6.Value
> ActiveCell.Offset(10, 0).Value = TextBox7.Value
> ActiveCell.Offset(11, 0).Value = TextBox8.Value
> ActiveCell.Offset(12, 0).Value = TextBox9.Value
> ...
>
> Merci
Bonjour,
Voici pour le fichier.
Merci
http://www.cjoint.com/c/FGfeaIJskWs
Avatar
LSteph
Le mardi 5 juillet 2016 04:45:30 UTC+2, MichD a écrit :
Le 04/07/16 à 22:23, isabelle a écrit :
bonjour,


Bonjour,
Et oui surtout que par chez nous (au pays du camembert) le séparateur décimal officiel est la virgule.
Cependant, bon à retenir dans le code d' Isabelle, la simplification d'écriture du code par la boucle pour ne pas répéter chaque textbox et chaque cellule.
--
LSteph
Bonjour Isabelle,
La procédure que tu as soumise fonctionne seulement si les nombres
saisis dans les textbox sont des nombres entiers.
Habituellement, le réparateur décimal utilisé en franà §ais est la
virgule. La fonction de conversion Cdbl() fonctionne seulement avec le
séparateur décimal qui est défini dans le panneau de confi guration de
Windows, soit, la virgule en français.
Lorsque l'usager effectue la saisie d'un nombre avec une section
décimale, comme nous sommes en VBA, la touche "point" du clavier
numérique insèrera toujours un point à moins d'utiliser la virgule du
clavier alphanumérique. Par conséquent, avec la virgule comme s éparateur
décimal dans le panneau de configuration, on doit s'assurer que l'us ager
utilise la virgule pour saisie la donnée à défaut de quoi la procédure
se plantera. Si l'ordinateur a le "Point" comme séparateur déci mal, ta
procédure fonctionnera correctement. Le hic, comment s'assurer que t ous
les ordinateurs qui ouvriront le fichier aient le point comme sépara teur
décimal?
Sur un ordinateur utilisant la virgule comme séparateur décimal dans le
panneau de configuration Windows, si l'usager saisit un nombre avec un
"Point" dans un textbox, cette ligne de code retournera toujours FAUX et
par conséquent, la valeur ne sera jamais mise dans la cellule.
If IsNumeric(Me.Controls("TextBox" & I).Value) Then
Ce sera OK, si l'usager utilise la virgule.
MichD
Avatar
linebaker
Le lundi 04 Juillet 2016 à 23:17 par Linebaker :
Bonsoir,
À l'aide d'un USF, j'ajoute des valeurs des les cellules. Le tout va
bien.
Avec un 2e USF pour corriger ou ajouter des valeurs, les valeurs non
modifiées se remettent en mode texte ? Comment faire qu'elles restent en
nombre ce qui fausse mes calculs.
Voici une partie du code :
If OptionButton1 = True Then
ActiveCell.Offset(4, 0).Value = TextBox1.Value
ActiveCell.Offset(5, 0).Value = TextBox2.Value
ActiveCell.Offset(6, 0).Value = TextBox3.Value
ActiveCell.Offset(7, 0).Value = TextBox4.Value
ActiveCell.Offset(8, 0).Value = TextBox5.Value
ActiveCell.Offset(9, 0).Value = TextBox6.Value
ActiveCell.Offset(10, 0).Value = TextBox7.Value
ActiveCell.Offset(11, 0).Value = TextBox8.Value
ActiveCell.Offset(12, 0).Value = TextBox9.Value
...
Merci
Bonjour,
J'ai remplacé le cdbl par val et le tout fonctionne.
Merci
1 2