Script conversion nombre avec caratères [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
mardi 7 novembre 2017
Statut
Membre
Dernière intervention
7 novembre 2017
-
Messages postés
4
Date d'inscription
vendredi 15 février 2013
Statut
Membre
Dernière intervention
26 décembre 2017
-
Bonjour,

J'ai le problème suivant : je mets un forme via un script VBA un fichier qui comporte des chiffres écrit avec un "." pour la séparation des milliers.
J'ai donc ceci dans le fichier:
56,34
2.645,34
24

Problème : le 2.654,34 n'est pas reconnu comme un chiffre, mais comme un texte.

Lorsque je fais un simple "remplacer tout" ("." en ""), ça fonctionne bien, et je retrouve ce que je veux.

Mais lorsque je le fait avec VBA (j'ai bêtement enregistré la marco), il m'enlève également les ","; de sorte que je me retrouve avec ceci:
5634
2645,34
24

Macro :
Columns("C:C").Select
Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False


Une idée de mon erreur ou de comment corriger mon script pour obtenir le même résultat qu'en utilisant la

3 réponses

Messages postés
15528
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 janvier 2021
1 440
Bonjour,
pour eviter le select, mais ca marche sans virer les "," !!!!!!
Columns(3).Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Messages postés
2
Date d'inscription
mardi 7 novembre 2017
Statut
Membre
Dernière intervention
7 novembre 2017

Pas chez moi...

J'ai partiellement contourné le problème en définissant un type décimal avec "." comme séparateur de groupe ("digit group separator") dans les paramètre régionaux.

Reste à automatiser le passage en nombre d'un nombre formaté en texte.

Mais je suppose que ça, je trouverai dans le forum.

Merci pour l'aide!
Messages postés
17301
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
20 janvier 2021
4 446
Bonjour,

écrit ton code comme cela pour traiter la plage C2:C100

Dim i As Integer
For i = 2 To 100
Cells(i, 3).Replace What:=".", Replacement:=""
Cells(i, 3) = Cells(i, 3) * 1
Next i
Messages postés
4
Date d'inscription
vendredi 15 février 2013
Statut
Membre
Dernière intervention
26 décembre 2017

Bonjour Mike,

merci beaucoup pour la réponse.
Je viens de pouvoir modifier le code, il tourne aux petits oignons !

Et des 3 propositions, c'est celle qui me plait le plus (passé de programmeur/bisouilleur sans doute...)

Dje
Messages postés
23814
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 janvier 2021
6 593
Bonjour,

sur tes nombres formatés 2.645,34 (et uniquement ceux-là sinon les bons repasseront en texte) :
    [C2:C10].TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), DecimalSeparator:=",", ThousandsSeparator:=".", _
        TrailingMinusNumbers:=False

mais ça peut être fait directement au moment de l'importation à l'étape 3.
eric