"Loïc" a écrit dans le message de news:c70nb1$9md$
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.
michdenis
Bonjour Loïc,
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
"Loïc" a écrit dans le message de news:c70nb1$9md$ 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.
Bonjour Loïc,
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'-----------------------
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
c.Value = Application.Substitute(c, ".", "")
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub
'-----------------------
Salutations!
"Loïc" <ath25_marreduspam@hotmail.com> a écrit dans le message de news:c70nb1$9md$1@news-reader2.wanadoo.fr...
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.
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
"Loïc" a écrit dans le message de news:c70nb1$9md$ 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.
Loïc
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
C'est parfait !
Merci beaucoup.
En supposant que tu veuilles enlever la virgule(séparateur décimale) au
fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'-----------------------
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
c.Value = Application.Substitute(c, ".", "")
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub
'-----------------------
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
C'est parfait !
Merci beaucoup.
Loïc
Bonsoir Loïc, Ces quelques lignes, directement tirées de l'enregistreur :
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.
. salut private sub ...()
Dim CL As Range, chiffres As String For Each CL In Selection chiffres = Trim(CL.Text) If chiffres <> "" Then If InStr(chiffres, ",") > 0 Then chiffres = Replace(chiffres, ",", "") End If end sub chiffres = nom de la plage de cellule @+
-----Message d'origine-----
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.
.
salut
private sub ...()
Dim CL As Range, chiffres As String
For Each CL In Selection
chiffres = Trim(CL.Text)
If chiffres <> "" Then
If InStr(chiffres, ",") > 0 Then
chiffres = Replace(chiffres, ",", "")
End If
end sub
chiffres = nom de la plage de cellule
@+
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.
. salut private sub ...()
Dim CL As Range, chiffres As String For Each CL In Selection chiffres = Trim(CL.Text) If chiffres <> "" Then If InStr(chiffres, ",") > 0 Then chiffres = Replace(chiffres, ",", "") End If end sub chiffres = nom de la plage de cellule @+
Loïc
Bonjour Loïc,
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
Re-bonjour,
J'utilise ta solution cependant je ne peux plus saisir les chiffres se terminant en ,00 (ex: 25,00 me donne 25). C'est assez embetant car c'est pour de l'export .csv et il me faut impérativement 2 chiffres pour les décimales même si nulles.
Re-merci :o))
Bonjour Loïc,
En supposant que tu veuilles enlever la virgule(séparateur décimale) au
fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'-----------------------
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
c.Value = Application.Substitute(c, ".", "")
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub
'-----------------------
Salutations!
Re-bonjour,
J'utilise ta solution cependant je ne peux plus saisir les chiffres se
terminant en ,00 (ex: 25,00 me donne 25). C'est assez embetant car c'est
pour de l'export .csv et il me faut impérativement 2 chiffres pour les
décimales même si nulles.
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
Re-bonjour,
J'utilise ta solution cependant je ne peux plus saisir les chiffres se terminant en ,00 (ex: 25,00 me donne 25). C'est assez embetant car c'est pour de l'export .csv et il me faut impérativement 2 chiffres pour les décimales même si nulles.
Re-merci :o))
michdenis
Bonjour Loïc,
Selon moi, la seule alternative, c'est que ta plage de cellule soit au format texte. et la procédure irait comme ceci : (j'ai modifié seulement le séparateur décimale dans la formule de substitution) '---------------------------- 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 d = c.Value Application.EnableEvents = False c.Value = Application.Substitute(c, ",", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais lorsque l'on demande ce que la cellule contient. Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
"Loïc" a écrit dans le message de news:c72tva$go1$
Bonjour Loïc,
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
Re-bonjour,
J'utilise ta solution cependant je ne peux plus saisir les chiffres se terminant en ,00 (ex: 25,00 me donne 25). C'est assez embetant car c'est pour de l'export .csv et il me faut impérativement 2 chiffres pour les décimales même si nulles.
Re-merci :o))
Bonjour Loïc,
Selon moi, la seule alternative, c'est que ta plage de cellule soit au format texte. et la procédure irait comme ceci :
(j'ai modifié seulement le séparateur décimale dans la formule de substitution)
'----------------------------
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
d = c.Value
Application.EnableEvents = False
c.Value = Application.Substitute(c, ",", "")
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub
'----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais lorsque l'on demande ce que la cellule contient.
Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
"Loïc" <ath25_marreduspam@hotmail.com> a écrit dans le message de news:c72tva$go1$1@news-reader1.wanadoo.fr...
Bonjour Loïc,
En supposant que tu veuilles enlever la virgule(séparateur décimale) au
fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'-----------------------
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
c.Value = Application.Substitute(c, ".", "")
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub
'-----------------------
Salutations!
Re-bonjour,
J'utilise ta solution cependant je ne peux plus saisir les chiffres se
terminant en ,00 (ex: 25,00 me donne 25). C'est assez embetant car c'est
pour de l'export .csv et il me faut impérativement 2 chiffres pour les
décimales même si nulles.
Selon moi, la seule alternative, c'est que ta plage de cellule soit au format texte. et la procédure irait comme ceci : (j'ai modifié seulement le séparateur décimale dans la formule de substitution) '---------------------------- 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 d = c.Value Application.EnableEvents = False c.Value = Application.Substitute(c, ",", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais lorsque l'on demande ce que la cellule contient. Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
"Loïc" a écrit dans le message de news:c72tva$go1$
Bonjour Loïc,
En supposant que tu veuilles enlever la virgule(séparateur décimale) au fur et à mesure que tu entres tes données dans
la plage H2:H10 ... au besoin, modifie la plage de cellules ....
'----------------------- 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 c.Value = Application.Substitute(c, ".", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '-----------------------
Salutations!
Re-bonjour,
J'utilise ta solution cependant je ne peux plus saisir les chiffres se terminant en ,00 (ex: 25,00 me donne 25). C'est assez embetant car c'est pour de l'export .csv et il me faut impérativement 2 chiffres pour les décimales même si nulles.
Re-merci :o))
Loïc
Bonjour Loïc,
Selon moi, la seule alternative, c'est que ta plage de cellule soit au format texte. et la procédure irait comme ceci :
(j'ai modifié seulement le séparateur décimale dans la formule de substitution)
'---------------------------- 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 d = c.Value Application.EnableEvents = False c.Value = Application.Substitute(c, ",", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais lorsque l'on demande ce que la cellule contient.
Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
Merci je vais essayer cela même si le format texte de la cellule m'embête un peu.
J'ai également chercher une autre piste (assez tordue je dois l'avouer :o) ) en essayant de récupérer les décimales en vba puis faire un jeu de conditions :
Si le nombre se termine par ",00" alors....
If Mid(c, 4, 2) = "" Then c.Value = Application.Substitute(c, ".", "") & "00" etc...
Ainsi je rajoute artificiellement les "00" à mon nombre ce qui tombe impec pour mon export csv.
Le problème est que je n'ai rien trouvé en vba qui me permette de récupérer de façon fiable les décimales d'un nombre.
Merci de ton aide.
PS : j'ai annulé mon précédent post par erreur - désolé :o(
Bonjour Loïc,
Selon moi, la seule alternative, c'est que ta plage de cellule soit au
format texte. et la procédure irait comme ceci :
(j'ai modifié seulement le séparateur décimale dans la formule de
substitution)
'----------------------------
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
d = c.Value
Application.EnableEvents = False
c.Value = Application.Substitute(c, ",", "")
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub
'----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais
lorsque l'on demande ce que la cellule contient.
Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
Merci je vais essayer cela même si le format texte de la cellule m'embête un
peu.
J'ai également chercher une autre piste (assez tordue je dois l'avouer :o) )
en essayant de récupérer les décimales en vba puis faire un jeu de
conditions :
Si le nombre se termine par ",00" alors....
If Mid(c, 4, 2) = "" Then
c.Value = Application.Substitute(c, ".", "") & "00"
etc...
Ainsi je rajoute artificiellement les "00" à mon nombre ce qui tombe impec
pour mon export csv.
Le problème est que je n'ai rien trouvé en vba qui me permette de récupérer
de façon fiable les décimales d'un nombre.
Merci de ton aide.
PS : j'ai annulé mon précédent post par erreur - désolé :o(
Selon moi, la seule alternative, c'est que ta plage de cellule soit au format texte. et la procédure irait comme ceci :
(j'ai modifié seulement le séparateur décimale dans la formule de substitution)
'---------------------------- 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 d = c.Value Application.EnableEvents = False c.Value = Application.Substitute(c, ",", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais lorsque l'on demande ce que la cellule contient.
Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
Merci je vais essayer cela même si le format texte de la cellule m'embête un peu.
J'ai également chercher une autre piste (assez tordue je dois l'avouer :o) ) en essayant de récupérer les décimales en vba puis faire un jeu de conditions :
Si le nombre se termine par ",00" alors....
If Mid(c, 4, 2) = "" Then c.Value = Application.Substitute(c, ".", "") & "00" etc...
Ainsi je rajoute artificiellement les "00" à mon nombre ce qui tombe impec pour mon export csv.
Le problème est que je n'ai rien trouvé en vba qui me permette de récupérer de façon fiable les décimales d'un nombre.
Merci de ton aide.
PS : j'ai annulé mon précédent post par erreur - désolé :o(
docm
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
"Loïc" wrote in message news:c737ib$32f$
Bonjour Loïc,
Selon moi, la seule alternative, c'est que ta plage de cellule soit au format texte. et la procédure irait comme ceci :
(j'ai modifié seulement le séparateur décimale dans la formule de substitution)
'---------------------------- 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 d = c.Value Application.EnableEvents = False c.Value = Application.Substitute(c, ",", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais lorsque l'on demande ce que la cellule contient.
Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
Merci je vais essayer cela même si le format texte de la cellule m'embête un
peu.
J'ai également chercher une autre piste (assez tordue je dois l'avouer :o) )
en essayant de récupérer les décimales en vba puis faire un jeu de conditions :
Si le nombre se termine par ",00" alors....
If Mid(c, 4, 2) = "" Then c.Value = Application.Substitute(c, ".", "") & "00" etc...
Ainsi je rajoute artificiellement les "00" à mon nombre ce qui tombe impec pour mon export csv.
Le problème est que je n'ai rien trouvé en vba qui me permette de récupérer
de façon fiable les décimales d'un nombre.
Merci de ton aide.
PS : j'ai annulé mon précédent post par erreur - désolé :o(
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
"Loïc" <ath25_marreduspam@hotmail.com> wrote in message
news:c737ib$32f$1@news-reader4.wanadoo.fr...
Bonjour Loïc,
Selon moi, la seule alternative, c'est que ta plage de cellule soit au
format texte. et la procédure irait comme ceci :
(j'ai modifié seulement le séparateur décimale dans la formule de
substitution)
'----------------------------
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
d = c.Value
Application.EnableEvents = False
c.Value = Application.Substitute(c, ",", "")
Application.EnableEvents = True
Next
End If
Set Rg = Nothing
End Sub
'----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais
lorsque l'on demande ce que la cellule contient.
Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
Merci je vais essayer cela même si le format texte de la cellule m'embête
un
peu.
J'ai également chercher une autre piste (assez tordue je dois l'avouer
:o) )
en essayant de récupérer les décimales en vba puis faire un jeu de
conditions :
Si le nombre se termine par ",00" alors....
If Mid(c, 4, 2) = "" Then
c.Value = Application.Substitute(c, ".", "") & "00"
etc...
Ainsi je rajoute artificiellement les "00" à mon nombre ce qui tombe impec
pour mon export csv.
Le problème est que je n'ai rien trouvé en vba qui me permette de
récupérer
de façon fiable les décimales d'un nombre.
Merci de ton aide.
PS : j'ai annulé mon précédent post par erreur - désolé :o(
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
"Loïc" wrote in message news:c737ib$32f$
Bonjour Loïc,
Selon moi, la seule alternative, c'est que ta plage de cellule soit au format texte. et la procédure irait comme ceci :
(j'ai modifié seulement le séparateur décimale dans la formule de substitution)
'---------------------------- 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 d = c.Value Application.EnableEvents = False c.Value = Application.Substitute(c, ",", "") Application.EnableEvents = True Next End If Set Rg = Nothing End Sub '----------------------------
En VBA, les zéros non significatifs d'un nombre n'apparaissent jamais lorsque l'on demande ce que la cellule contient.
Ça devient purement un jeu de devinettes !!!
L'autre alternative, est d'utiliser un textbox d'un formulaire ....
Salutations!
Merci je vais essayer cela même si le format texte de la cellule m'embête un
peu.
J'ai également chercher une autre piste (assez tordue je dois l'avouer :o) )
en essayant de récupérer les décimales en vba puis faire un jeu de conditions :
Si le nombre se termine par ",00" alors....
If Mid(c, 4, 2) = "" Then c.Value = Application.Substitute(c, ".", "") & "00" etc...
Ainsi je rajoute artificiellement les "00" à mon nombre ce qui tombe impec pour mon export csv.
Le problème est que je n'ai rien trouvé en vba qui me permette de récupérer
de façon fiable les décimales d'un nombre.
Merci de ton aide.
PS : j'ai annulé mon précédent post par erreur - désolé :o(
Loïc
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 !!
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
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