Script conversion nombre avec caratères

Résolu
El_Dje Messages postés 2 Statut Membre -  
ElDje Messages postés 5 Statut Membre -
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 17413 Statut Membre 1 715
 
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 Statut Membre
 
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 19571 Statut Contributeur 5 136
 
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 5 Statut Membre
 
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 25847 Statut Contributeur 7 279
 
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