Conversion texte en nombres (macro)

Fermé
Ysabe_l Messages postés 12449 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 18 avril 2024 - 6 sept. 2016 à 14:07
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 - 6 sept. 2016 à 14:46
Bonjour,

Je rencontre un soucis avec une macro que j'essaye de créer.

Je récupère des données brutes et je dois les traiter. Parmi ces données il y a une colonne de nombres décimaux dont le séparateur est un point et qu'Excel considère donc comme du texte. J'ai besoin qu'il les considère comme des nombres pour pouvoir ensuite faire une mise en forme conditionnelle selon la valeur de la case.

Si je sélectionne ma colonne et que je vais dans remplacer et que je remplace le point par une virgule, excel les transforme automatiquement en nombres. C'est parfait c'est ce que je veux.

SAUF QUE si je fais exactement la même chose par une macro, il remplace bien les points par des virgules mais continue à considérer que c'est du texte, il m'affiche alors une erreur sur chacun et me permet de corriger l'erreur en convertissant en nombre. Mais du coup il faut les faire un par un et une macro n'est plus possible. J'ai essayé de lui dire que c'était un format "standard" ou un format "nombre" mais il s'en fiche il continue à considérer que c'est du texte tout en me signalant que quand même ça ressemble bien à un nombre ce truc.

Je cherche donc une solution pour lui faire "comprendre" que c'est des nombres mais en utilisant une macro.

J'utilise Excel 2007.

Je créé la macro en passant par l'enregistrement de macro et non en écrivant les codes. Et ça me donne ça comme code (je ne sais pas si ça peut être utile, mais mieux vaut en dire trop) :

Sub nombres()
'
' nombres Macro
'

'
    Columns("D:D").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub


Merci d'avance.

5 réponses

Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
Modifié par Fahora le 6/09/2016 à 14:26
Bonjour ,

Essayes ça :

 Range("D:D").Select
    Selection.TextToColumns Destination:=Range("D2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True


Fais à partir de l'enregistreur de macro , puis Données > Convertir > Avancés , Séparateur de décimales : "."
Cordialement,
Nos seules limites sont celles que nous nous imposons nous-même.
La politesse et un merci ne tuent pas. Il existe un bouton pour "Résolu" pour confirmer que     votre problème n'en est plus un. Fahora
0
Ysabe_l Messages postés 12449 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 18 avril 2024 274
6 sept. 2016 à 14:34
Bonjour,

Ca me donne un message d'erreur pour le moment. Mais c'est toujours une piste, je vais creuser ça !

Merci
0