OVH Cloud OVH Cloud

Suppression virgule en VBA

11 réponses
Avatar
Loïc
Bonjour à tous,

Je cherche une solution pour supprimer automatiquement la virgule lors de la
saisie d'un nombre.

Exemples :

25,22 donne 2522
25,00 donne 2500
25 donne 2500

J'ai déjà la procédure événementielle pour la modification automatique lors
de la saisie :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("H2:H10")) Is Nothing Then
etc..

mais il manque la conversion en VBA de ce qui me semble me convenir
=ENT(A1*100) afin de garder les 2 chiffres après la virgule.

Merci beaucoup.

1 réponse

1 2
Avatar
docm
Heureux d'avoir pu aider.
On peut simplifier davantage et ne conserver que
Dim Rg As Range

Set Rg = Intersect(Target, Range("H2:H10"))
If Not Rg Is Nothing Then
For Each c In Rg
Application.EnableEvents = False
If Not IsNumeric(c) Then
MsgBox c.Value & " n'est pas un nombre"
Else
c.Value = Int(c) * 100 + Format(c - Int(c), ".00") * 100
End If
Application.EnableEvents = True
Next
End If
Set Rg = Nothing

"Loïc" wrote in message
news:c752ln$duj$

Bonjour Loïc.
C'est une piste intéressante que de vouloir récupérer les décimales.
Voici une façon de récupérer les 2 premières décimales
par la formule c - Int(c) :
Gérard

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range

Set Rg = Intersect(Target, Range("H2:H10"))
If Not Rg Is Nothing Then
For Each c In Rg
Application.EnableEvents = False
If Not IsNumeric(c) Then
MsgBox c.Value & " n'est pas un nombre"
Else
If c = Int(c) Then 'Vérifie si c'est un nombre entier
c.Value = c * 100 'si oui ajouter 00
Else
'si non seules les 2 premières décimales sont conservées
c.Value = Int(c) * 100 + Format(c - Int(c), ".00") * 100
End If
End If
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub


Merci infiniment cela convient parfaitement !!




1 2