Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mise en forme inatendue d'un montant en VBA

jhofman

XLDnaute Occasionnel
Bonjour


J'utilise une procédure pour "nettoyer" des données saisies.
Code:
Sub mise_enforme()

Set range_C = Range("A2:A6")
For Each cel In range_C
        a = cel.Value
        a = Replace(a, " ", "")
        a = Replace(a, ",,", ",")
        Cells(cel.Row, cel.Column + 1).Value = a
Next
End Sub

Mon problème est que la données 1,123456 se transforme en 123456.
SI quelqu'un a une explication il sera le bienvenu
 

Pièces jointes

  • MiseEnformeDonnée.xls
    28.5 KB · Affichages: 38
G

Guest

Guest
Re : Mise en forme inatendue d'un montant en VBA

Bonjour JHoffman,

Sans avoir testé, il me semble que ceci devrait le faire:

a=Val(replace(a,",,","."))

En vba il faut remplacer la virgule par le point

A bientôt
 

jhofman

XLDnaute Occasionnel
Re : Mise en forme inatendue d'un montant en VBA

merci

Mais avec le point cela donne le même résultat.
ce n'est pas cette fonction qui gène.
(ps le val ne semble pas nécesseraire)


en fait c'est el simple fait d'écrire
Code:
a = cel.Value
cel.value = a

qui généère une anomalie :
1,2 reste bien 1,2
mais
1,123132 devient 1 123 132
(disparition de la virgule)
 
Dernière édition:
G

Guest

Guest
Re : Mise en forme inatendue d'un montant en VBA

Re jHoffman,

J'ai réussit avec ceci:

Code:
For Each cel In range_C
        a = cel.Value
        a = Replace(a, " ", "")
        a = Replace(a, ",,", ".")
        If IsNumeric(a) Then
          Cells(cel.Row, cel.Column + 1).Value = CDbl(a)
        Else
          Cells(cel.Row, cel.Column + 1).Value = a
        End If
Next

Il faut que tes cellules soit au format nombre avec le nombre de décimales souhaitées.

A bientôt
 

jhofman

XLDnaute Occasionnel
Re : Mise en forme inatendue d'un montant en VBA

merci Roland_M & Hasco.


la solution de Roland_m marche "en consultation" mais pose un problème pour les montants.
le solution de Hasco est parfaite.

Merci beaucoup.
José
 

skoobi

XLDnaute Barbatruc
Re : Mise en forme inatendue d'un montant en VBA

Bonjour jhofman, Roland,
Salut Hasco ,

Ou ceci?
Code:
Sub mise_enforme()
  Set range_C = Range("A2:A6")
  For Each cel In range_C
    a = cel.Value
    a = Replace(a, " ", "")
    a = Replace(a, ",,", ",")
    On Error Resume Next
    Cells(cel.Row, cel.Column + 1).Value = CDbl(a)
    If Err.Number <> 0 Then Cells(cel.Row, cel.Column + 1).Value = a
    On Error GoTo 0
  Next
End Sub

Edit: je suis en retard moi!
n'empêche Hasco, on avait la même idée (promis, j'ai pas copié )
 

Discussions similaires

Réponses
3
Affichages
347
Réponses
12
Affichages
706
Réponses
5
Affichages
837
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…