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

macro : Remplacer un caractère

2 réponses
Avatar
Maxime
Bonjour !
J'aurais aim=E9 conna=EEtre les fonctions permettant de=20
remplacer un caract=E8re par un autre dans le texte=20
r=E9cup=E9rer dans un TextBox :

Sub Test()
Dim Chaine As String
Chaine =3D TextBox1.Text
'ici il faudrait une fonction permettant de remplacer=20
un '.' par une ',' dans la String Chaine
End Sub

Merci pour votre aide

2 réponses

Avatar
Michel Gaboly
Bonjour,

Il faut utiliser la fonction SUBSTITUER(), que l'on appelle à partir de VBA :

Chaine = Application.WorksheetFunction.Substitute(Chaine, ",", ".")

Cependant, s'il s'agit de s'assurer que ce qui est entré dans le TextBox est numérique, ce n'est
pas toujours suffisant :

- Certaines personnes modifient les paramètres pour utiliser le point comme séparateur décimal

- La macro peut tourner sur un poste équipé d'un système autre que français.

Il vaut alors mieux utiliser la propriété "International" pour lire le séparateur actif, et remplacer
lors de la frappe point ou virgule poar le séparateur :

Private Sub TextBox1_Change()
If TextBox1 <> "" Then
Sep = Application.International(xlDecimalSeparator)
TMontant = Application.WorksheetFunction.Substitute(TMontant, ".", Sep)
TMontant = Application.WorksheetFunction.Substitute(TMontant, ",", Sep)
If Not IsNumeric(TextBox1) Then
MsgBox "Le montant doit être un nombre positif !"
' Suppression du dernier caractère entré.
TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
End If
End If
End Sub

Une adaptation est nécessaire pour accepter les nombres négatifs (accepter "-" en première position) :

If TextBox1 <> "" And TextBox1 <> "-" Then
...
MsgBox "Le montant doit être un nombre !"
...



Bonjour !
J'aurais aimé connaître les fonctions permettant de
remplacer un caractère par un autre dans le texte
récupérer dans un TextBox :

Sub Test()
Dim Chaine As String
Chaine = TextBox1.Text
'ici il faudrait une fonction permettant de remplacer
un '.' par une ',' dans la String Chaine
End Sub

Merci pour votre aide


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Michel Pierron
Bonjour Maxime;
Chaine = Replace(TextBox1, ".", ",")

MP

"Maxime" a écrit dans le message de
news:045e01c34f55$57808200$
Bonjour !
J'aurais aimé connaître les fonctions permettant de
remplacer un caractère par un autre dans le texte
récupérer dans un TextBox :

Sub Test()
Dim Chaine As String
Chaine = TextBox1.Text
'ici il faudrait une fonction permettant de remplacer
un '.' par une ',' dans la String Chaine
End Sub

Merci pour votre aide