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

  • Initiateur de la discussion Initiateur de la discussion jhofman
  • 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 !

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

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
 
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:
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
 
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é
 
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é 😀)
 
- 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
3
Affichages
415
  • Question Question
XL 2019 Code VBA
Réponses
12
Affichages
939
Réponses
5
Affichages
978
M
Réponses
3
Affichages
931
M
G
  • Question Question
Réponses
1
Affichages
803
Grouchet
G
X
  • Question Question
Réponses
4
Affichages
2 K
Xplor
X
M
Réponses
2
Affichages
2 K
MickaelKeul
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…