Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

néné06

XLDnaute Accro
Bonsoir à toutes est à tous

J’ai trouvé cette routine qui me permet de formater correctement une textbox pour entrer des nombres avec uniquement « , » au lieu du « . ».

Je l’ai donc adaptée à mes besoins, mais je ne trouve pas dans le code, la réalisation du phénomène suivant.

Sur la feuille Excel, lorsque je clic sur une cellule, au « Mouse Up », l’UserForm1 apparaît !

Si l’un de vous peut me donner l’Explication.


D’avance Merci
 
Re : Explication de code

Bonjour néné06, JM

néné06: J'ai regardé le fichier pour entrer des chiffres et transformer le point en virgule, mais le code me paraît un peu complexe pour un néophyte 🙂.

On ne peut pas faire plus simple pour entrer des chiffres dans un textbox?

A vos pianos 😉.
 
Re : Explication de code

Re

Bon, voici un petit fichier que je viens de faire pour entrer dans un USF des nombres avec virgule.

Il me manque à mettre la virgule sur le valeur du textbox en A1 si on a plus de 2 décimales (la cela m'échappe un peu 😱).

Je compte sur vous 😉.

à 11H35: C'est bon, j'ai trouvé. Je vous laisse chercher 😛. Il y a un c dedans.

La réponse: ce soir 🙂.
 

Pièces jointes

Dernière édition:
Re : Explication de code

Bonjour à tous

pas sûr d'avoir tout compris, mais une autre approche comme ceci, fonctionne ainsi chez moi, sous 2003, avec le point comme séparateur de décimal, code modifié pour remplacer point par virgule
Code:
Option Explicit
Private Sub CommandButton1_Click()
If IsNumeric(TextBox1) Then Cells(1, 1).Value = TextBox1.Value
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44: Exit Sub
If InStr("0123456789,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

sans doute convertir si virgule en séparateur...
Code:
Option Explicit
Private Sub CommandButton1_Click()
If IsNumeric(CDbl(TextBox1)) Then Cells(1, 1).Value = CDbl(TextBox1.Value)
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44: Exit Sub
If InStr("0123456789,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

bon après midi
@+

Edition ; rajouté un "exit sub"
 
Dernière édition:
Re : Explication de code

Bonjour à tous

Il est exact que le code sort un peu « des sentiers battus », mais après avoir utilisé la méthode
-Keypress avec keyascii, la « , » apparaît dans environ 80% des cas mais à certains moments, et je n’ai pas réussi à comprendre pourquoi, il m’apparaît « . »
-idem avec méthode Keyup, Keydown et donc keycode.
J’ai donc trouvé dans mes archives, ce programme, de MARMONIER Cédric, que je salut et qui traite de plusieurs cas similaires.
Je l’ai donc allégé pour répondre uniquement à mes besoins.
J’ai trouvé une petite modif sur le programme de JP13 que voici.

Private Sub CommandButton1_Click()
'Cells(1, 1) = TextBox1.Value changé en
Cells(1, 1) = CDbl(TextBox1.Value)
'Cells(1, 1) = Cells(1, 1) * 1 supprimé
End Sub

Merci à tous

A+
 
Re : Explication de code

Bonjour néné06, Staple1600,MJ13,Pierrot93

Je m'insère dans votre discutions, j'ai été confronté à ce problème

voici ma solution à adapter.

'========================================================
Sub FormaCompta() 'Mise au format colonne "D" "Feuil2" (Prix Unitaire (€))
Dim i%, Y$, NbC%, M%, J%
Dim Text$, Num As Double, Num1 As Double

Application.ScreenUpdating = False
Sheets("Feuil2").Select
M = Sheets("Feuil2").Range("D65536").End(xlUp).Row
For i = 3 To M
Y = Range("D" & i).Value
If Y <> "" Then
NbC = Len(Y)
For J = 1 To NbC
Text = Mid(Y, J, 1)
'------------ Mise au format si "," (virgule) -------------
If Text = Chr(44) Then
Num1 = Range("D" & i).Value
Range("D" & i).Select
Range("D" & i).NumberFormat = "#,##0.00[$ €-1]"
Range("D" & i).Value = Num1
End If
'--- Mise au format si "." (point) transformé en virgule ---
If Text = Chr(46) Then
Num = Replace(Range("D" & i).Value, ".", ",")
Range("D" & i).Select
Range("D" & i).NumberFormat = "#,##0.00[$ €-1]"
Range("D" & i).Value = Num
End If
Next
End If
Next
Application.ScreenUpdating = True
End Sub

'===================================================

et bon courage
amicalement
Jean-Paul
 
Re : Explication de code

Bonjour à tous,

le code que j'avais proposé devrait mieux fonctionner ainsi, à voir...
Code:
Option Explicit
Private Sub CommandButton1_Click()
If IsNumeric(CDbl(Replace(TextBox1, ",", "."))) Then Cells(1, 1).Value = CDbl(Replace(TextBox1, ",", "."))
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44: Exit Sub
If InStr("0123456789,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
bonne journée
@+
 
Re : Explication de code

Bonjour Pierrot93

J'hésite à utiliser la routine "Private Sub TextBox1_KeyPress",ainsi que "keyup,keydown" car ,par moments, aucune de ces routines n'est prise en compte lors de l'appui sur une touche et si je tape "." cela m'affiche le "." au lieu de ",".

Mystère pour moi.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour