Remplacer la virgule par un point dans code existant

  • Initiateur de la discussion Initiateur de la discussion blord
  • Date de début Date de début

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 !

blord

XLDnaute Impliqué
Bonjour à tous,

J'utilise régulièrement ce bout de code que j'avais récupérer sur le forum (merci beaucoup !) ...

Code:
Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
Const Point = "."
Const Virgule = ","

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Empêche la saisie autre que du numérique ainsi que plus qu'un séparateur décimal
If KeyAscii = Asc(Point) Then
        If InStr(TextBox1, Virgule) = 0 Then
            KeyAscii = Asc(Virgule)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
        KeyAscii = 0
    End If
     
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
Cependant, j'aimerais y ajouter une fonction soit de remplacer automatiquement la saisie d'une virgule par un point décimal.

J'ai essayé ceci au début ou à la fin du code :
If KeyAscii = 44 Then KeyAscii = 46

J'ai aussi essayé ceci au début ou à la fin du code :
With TextBox1
.Value = Replace(.Value, ",", ".")
End With

Mais dès que je modifie le code, il laisse passer la saisie de plus d'un séparateur décimal (virgule ou point) ce que je ne désire évidemment pas...

Si quelqu'un pouvait m'éclairer sur mon problème, ce serait vraiment apprécié...

Bonne journée !

Benoit Lord
 
Re : Remplacer la virgule par un point dans code existant

Bonjour,

peut être ainsi si j'ai bien compris :
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Then KeyAscii = 46
If KeyAscii = 46 Then If InStr(TextBox1, Chr(KeyAscii)) > 0 Then KeyAscii = 0
End Sub

bon après midi
@+
 
Re : Remplacer la virgule par un point dans code existant

Bonjour Pierrot93, le forum,

Merci pour ton aide ! J'ai modifié ton code comme ceci afin de ne permettre que la saisie de chiffres, le point ou la virgule :

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789,.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If KeyAscii = 44 Then KeyAscii = 46
If KeyAscii = 46 Then If InStr(TextBox1, Chr(KeyAscii)) > 0 Then KeyAscii = 0
End Sub

Le tout fonctionne parfaitement !

Bon après-midi !

Benoit Lord
 
Re : Remplacer la virgule par un point dans code existant

Salut,
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(Virgule) Then
        If InStr(TextBox1, Point) = 0 Then
            KeyAscii = Asc(Point)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox1, Point) > 0 And KeyAscii = Asc(Point) Then
        KeyAscii = 0
    End If
End Sub
 
Dernière édition:
- 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

Réponses
10
Affichages
399
Réponses
20
Affichages
2 K
Réponses
1
Affichages
475
Compte Supprimé 979
C
Retour