Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(userform) valeur TextBox en nombre dans cellule

6 réponses
Avatar
papyty
Salut @ tous,

Je dois vraiment etre nul mais je coince depuis un bon moment le dessus.
Je recupere une valeur entrée dans un TextBox (userform) pour la mettre dans
une cellule. le probleme est que cette valeur est fomater texte et je
n'arrive pas à la convertir avant de la copier. j'utilise peut etre pas la
bonne formule pour copier cette valeur.
Range("d" & L).Value = txtCPS.Value
Merci d'avance

6 réponses

Avatar
Clément Marcotte
Bonjour,

Je recupere une valeur entrée dans un TextBox (userform) pour la
mettre dans

une cellule. le probleme est que cette valeur est fomater texte et
je

n'arrive pas à la convertir avant de la copier.


Essaie quelque chose de ce genre:

Pour un entier ( de -65535 à 65536) :

Range("d" & L).Value = cint(txtCPS.Value)

Pour un entier long:

Range("d" & L).Value = clng(txtCPS.Value)

Pour un nombre à virgule flottante en précision simple:

Range("d" & L).Value = csng(txtCPS.Value)

Pour un nombre en virgule flottante en précision étendue (double
precision)

Range("d" & L).Value = cdbl(txtCPS.Value)

Pour une date:

Range("d" & L).Value = cdate(txtCPS.Value)

Avatar
dadda
-----Message d'origine-----
Bonjour,

Je recupere une valeur entrée dans un TextBox
(userform) pour la


mettre dans
une cellule. le probleme est que cette valeur est
fomater texte et


je
n'arrive pas à la convertir avant de la copier.


Essaie quelque chose de ce genre:

Pour un entier ( de -65535 à 65536) :

Range("d" & L).Value = cint(txtCPS.Value)

Pour un entier long:

Range("d" & L).Value = clng(txtCPS.Value)

Pour un nombre à virgule flottante en précision simple:

Range("d" & L).Value = csng(txtCPS.Value)

Pour un nombre en virgule flottante en précision étendue
(double

precision)

Range("d" & L).Value = cdbl(txtCPS.Value)

Pour une date:

Range("d" & L).Value = cdate(txtCPS.Value)




.Bonjour
je rencontre le même problème. J'ai essayé la sulution

proposée. Mais elle ne marche pas. Je ne sais pas ce que
c'est "txtCPS" Une petite explication si possible
Merci




Avatar
michdenis
Bonjour Papyty,

La solution de Clément devrait fonctionner car ce sont des fonctions de conversions. Si tu veux plus d'explications sur ces
fonctions recherche dans l'aide sous l'index "conversion" lorsque tu es dans la fenêtre vbe(visual basic editior).

Cependant ce que Clément a omis de dire, c'est que ces fonctions de conversion requiert que ton séparateur décimal saisi dans
tes textbox soit le même que celui défini dans le panneau de configuration. Si ce n'est pas le cas, il y aura plantage dans
tous les cas, nonobstant la fonction de conversion que tu utiliseras.

Voici une façon de faire parmi d'autres pour chacun des textbox devant recevoir des nombres:

Tu dois adapter seulement le nom du textbox .

----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)

End Sub
------------------


Voici la fonction à copier dans un module standard

------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)

Dim SepDec As String
SepDec = Application.International(xlDecimalSeparator)

If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If

End Function
-------------------------------------


Salutations!





"papyty" a écrit dans le message de news:
Salut @ tous,

Je dois vraiment etre nul mais je coince depuis un bon moment le dessus.
Je recupere une valeur entrée dans un TextBox (userform) pour la mettre dans
une cellule. le probleme est que cette valeur est fomater texte et je
n'arrive pas à la convertir avant de la copier. j'utilise peut etre pas la
bonne formule pour copier cette valeur.
Range("d" & L).Value = txtCPS.Value
Merci d'avance
Avatar
AV
je rencontre le même problème. J'ai essayé la sulution
proposée. Mais elle ne marche pas. Je ne sais pas ce que
c'est "txtCPS" Une petite explication si possible


"txtCPS" c'est le nom du textbox
Pour récupérer la valeur tu peux essayer :
range("A1").value=textbox1.value*1

AV

Avatar
michdenis
Bonjour Alain,

" range("A1").value=textbox1.value*1 "

Sauf erreur, cela ne modifie en rien quant à la nécessité de la gestion du séparateur décimal dans un textbox.
Dans la mesure où une procédure de validation de la saisie est efficace ... c'est-à-dire qu'elle ne permet pas autre chose
que la saisie du séparateur décimal défini dans le panneau de configuration... Je suis d'accord que l'on puisse utiliser
cette méthode en lieu et place d'une fonction de conversion.... mais cela suppose d'abord une validation du textbox
lui-même...

;-)


Salutations!



"AV" a écrit dans le message de news:
je rencontre le même problème. J'ai essayé la sulution
proposée. Mais elle ne marche pas. Je ne sais pas ce que
c'est "txtCPS" Une petite explication si possible


"txtCPS" c'est le nom du textbox
Pour récupérer la valeur tu peux essayer :
range("A1").value=textbox1.value*1

AV

Avatar
AV
Je suis d'accord avec tout ce qui a été précédemment énoncé!
;-)
AV