Script conversion nombre avec caratères

Résolu
El_Dje Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
ElDje Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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   Statut Membre Dernière intervention  
 
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Membre Dernière intervention  
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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