Script conversion nombre avec caratères

Résolu/Fermé
El_Dje Messages postés 2 Date d'inscription mardi 7 novembre 2017 Statut Membre Dernière intervention 7 novembre 2017 - Modifié le 7 nov. 2017 à 13:18
ElDje Messages postés 4 Date d'inscription vendredi 15 février 2013 Statut Membre Dernière intervention 26 décembre 2017 - 26 déc. 2017 à 10:46
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

A voir également:

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
7 nov. 2017 à 13:24
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
0
El_Dje Messages postés 2 Date d'inscription mardi 7 novembre 2017 Statut Membre Dernière intervention 7 novembre 2017
7 nov. 2017 à 13:45
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!
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
7 nov. 2017 à 13:54
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
0
ElDje Messages postés 4 Date d'inscription vendredi 15 février 2013 Statut Membre Dernière intervention 26 décembre 2017
26 déc. 2017 à 10:46
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
7 nov. 2017 à 14:46
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

0