Conversion texte en nombres (macro) [Fermé]

Signaler
Messages postés
11052
Date d'inscription
vendredi 12 avril 2013
Statut
Contributeur
Dernière intervention
14 mai 2021
-
Messages postés
17343
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 mai 2021
-
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.

A voir également:

5 réponses

Messages postés
811
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
6 novembre 2020
65
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
Messages postés
11052
Date d'inscription
vendredi 12 avril 2013
Statut
Contributeur
Dernière intervention
14 mai 2021
253
Bonjour,

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

Merci
Messages postés
9788
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 mai 2021
2 111
Bonjour

as tu essayé avec la fonction val
Dim st as String, sn as Double
sn= Val(st)

Cdlmnt
Messages postés
11052
Date d'inscription
vendredi 12 avril 2013
Statut
Contributeur
Dernière intervention
14 mai 2021
253
Bonjour,

Alors j'avoue que je ne connais rien du tout au VBA, moi mon truc c'est le développement web normalement. Je vais me pencher là dessus si l'astuce de Fahora ne marche pas.

Merci
Messages postés
26018
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
15 mai 2021
5 924
Bonjour

pour numériser le résultat il suffit:

de copier une cellule vide
de sélectionner le champ à traiter
clic droit / collage spécial /ajouter

ça peut s'ajouter à la macro par enregistrement, en réservant une cellule vide à copier mais ça serait plus propre d'avoir un code VBA pour exécuter cette numérisation.
Mais moi, je ne sais pas l'écrire, vous trouverez sans aucun doute quelqu'un sur ce forum pour vous concocter ça

crdlmnt


Messages postés
9788
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 mai 2021
2 111
Et pour appliquer à une plage selectionnée
http://www.cjoint.com/c/FIgmOLvkGbq

Cdlmnt
Messages postés
17343
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 mai 2021
4 602
Bonjour le fil,

teste comme cela pour la colonne D de D2 à D20 à adapter

Sub test()
For i = 2 To 20
Cells(i, 4).Replace What:=".", Replacement:=","
If Cells(i, 4) > 0 Then Cells(i, 4) = Cells(i, 4) * 1
Next i
End Sub

A+
Mike-31

Pas savoir n'est pas un échec, l'échec est le refus d'apprendre.