Interrogation sur une convertion de format texte en nombre par une macro

christian95

XLDnaute Nouveau
Bonjour,

Je souhaite automatiser une conversion de format texte en format nombre (remplacement des "." par des ",").(tableau 1)

Si je le fais par "rechercher / remplacer" à partir de la barre de menu c'est Ok. (tableau 2).

Si je passe par enregistrer une macro, en refaisant la même manip.
Lorsque je relance cette macro

Sub Macro10()
'
' Macro10 Macro
'

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

toutes les cellules converties se retrouvent avec le triangle vert " le nombre dans cette cellule.....apostrophe" (tableau 3)

Je n'arrive pas à comprendre pourquoi, j'ai essayé pas mal de macro trouvées sur le forum, mais ça coince..
La solution de copier une celulle vide et de l'additionner à mes colonnes fonctionne, mais au niveau temps de ralisation c'est enormement plus long que par la barre de menu.

Si vous avez une idée du pourquoi j'ai des p'tits triangles...? ça m'interresse.

Amicalement
 

Pièces jointes

  • tableau 1.xlsx
    9.5 KB · Affichages: 65
  • tableau 2.xlsx
    9.3 KB · Affichages: 70
  • tableau 3.xlsx
    9.5 KB · Affichages: 64
  • tableau 1.xlsx
    9.5 KB · Affichages: 73
  • tableau 2.xlsx
    9.3 KB · Affichages: 73
  • tableau 1.xlsx
    9.5 KB · Affichages: 68
  • tableau 2.xlsx
    9.3 KB · Affichages: 70

Misange

XLDnaute Barbatruc
Re : Interrogation sur une convertion de format texte en nombre par une macro

En fait, la vraie question c'est l'interprétation des données de départ et leur signification :)
Autrement dit : quelles sont les valeurs vraiment attendues ? Est-ce que le point doit être considéré comme un séparateur de milliers ? Comme un séparateur décimal ?
dans le dernier classeur fourni par Christian, il n'y a chez moi en tous aucun espace dans les données initiales, ni aucune virgule. J'ai l'impression qu'on se prend le chou mais qu'on est à côté de la vraie question (mais je me trompe peut être).

Et oui Modeste GeeDee et moi nous aurions pu prendre le même pseudo, tout comme Alain Prost. Comme quoi le saint patron de naissance ne se penche pas sur tous les berceaux :)
 

pierrejean

XLDnaute Barbatruc
Re : Interrogation sur une convertion de format texte en nombre par une macro

Re

D'apres le #8 il semblerait que Christian souhaite que ,pour la feuille d'origine et dans tous les cas, le point sois reconnu comme separateur decimal et transformé en virgule en tant que separateur decimal
Pour ma part je considere qu'Excel manque de coherence quand il voit dans la feuille d'origine tantot le point comme separateur decimal (type 2.45 en R16) soit comme separateur des milliers (type 3.169 en R9)
 

ERIC S

XLDnaute Barbatruc
Re : Interrogation sur une convertion de format texte en nombre par une macro

Bonjour PierreJean

dans la méthode du remplacer, excel (vba) donne je crois priorité au format natif pour lequel les , sont des séparateurs de millier
quand il n'y a que 2 chiffres après la virgule, excel détecte qu ce ne sont pas des milliers........

peut-on lui en vouloir ? qui n'a pas galéré avec des récupérations de dates depuis des fichiers texte ou csv ??????

la méthode suggérée par microsoft ne semble pas générer d'erreur #3
 

ERIC S

XLDnaute Barbatruc
Re : Interrogation sur une convertion de format texte en nombre par une macro

Re

suite du #18 :

et en plus j'ai l'impression que si dans ta colonne tu as du texte contenant des points, ceux-ci ne sont pas remplacés

Les automatismes d'excel ont leur limite ...... comme disait Sénèque (encore lui) : Si le navigateur ne sait pas où il se trouve, ni dans quel port il veut aller, aucun vent ne lui sera favorable
 

MJ13

XLDnaute Barbatruc
Re : Interrogation sur une convertion de format texte en nombre par une macro

Bonjour à tous

Vous pouvez essayer cette macro à condition que le point soit bien une virgule en format français.

Code:
Sub Transforme_Cell_Text_Val_Special()
'MJ
T1 = Timer

DerLig = Cells.SpecialCells(xlLastCell).Row
DerCol = Cells.SpecialCells(xlLastCell).Column

Range(Cells(1, 1), Cells(DerLig, DerCol)).Select

For Each cell In Selection
If IsNumeric(Left(cell.Value, 1)) = True Or Left(cell.Value, 1) = "-" Then cell.Value = Val(cell)
Next

MsgBox Timer - T1
End Sub
 

MJ13

XLDnaute Barbatruc
Re : Interrogation sur une convertion de format texte en nombre par une macro

Re, Bonjour Eric, Pierrejean

Eric: Désolé, mais comme souvent, j'ai pas tout suivi :eek:.

Pierrejean: Oui long, peut-être, j'ai testé sur 1 de tes derniers fichier, il m'a mis 0,06 secondes :eek:.

Mais pour le problème des dates, on peut faire ainsi:

Code:
Sub Transforme_Cell_Text_Val_Special()
'MJ rajout avec like si il y a des dates
T1 = Timer

DerLig = Cells.SpecialCells(xlLastCell).Row
DerCol = Cells.SpecialCells(xlLastCell).Column

Range(Cells(1, 1), Cells(DerLig, DerCol)).Select

For Each cell In Selection
If cell Like "*/*" Then GoTo suite
If IsNumeric(Left(cell.Value, 1)) = True Or Left(cell.Value, 1) = "-" Then cell.Value = Val(cell)
suite:
Next

MsgBox Timer - T1
End Sub
 

Jam

XLDnaute Accro
Re : Interrogation sur une convertion de format texte en nombre par une macro

Salut à tous,

Juste une petite interrogation liée à une remarque d'Eric: s'agit-il de fichiers CSV importés, et si oui sont-ils de provenances différentes...ceci pouvant expliquer cela ;)

Petite remarque complémentaire concernant le traitement des fichiers de Christian: ne serait-il pas plus pertinent de les requêter directement plutôt que de les importer puis de les "retraiter" ? En effet avec une requête (ADO hein) pas besoin de se préoccuper du nombre de ligne, et pour les colonnes il suffit de les indiquer dans la requête.

Bon courage
 

christian95

XLDnaute Nouveau
Re : Interrogation sur une convertion de format texte en nombre par une macro

Bonjour à tous,

On peut dire que ma petite interrogation fait réfléchir. Je vais essayé de repondre à vos interrogations.


Misange
En fait, la vraie question c'est l'interprétation des données de départ et leur signification
Autrement dit : quelles sont les valeurs vraiment attendues ? Est-ce que le point doit être considéré comme un séparateur de milliers ? Comme un séparateur décimal ?​


Ce sont des mesures électriques, restituées par un logiciel interne qui nous exporte toutes ces donneées en .CSV, et c'est bien un séparateur décimal.
Car après transformation du texte en nombre, les données sont retraités pour analyse, avec des seuils à atteindre, des mises en forme conditionnelle etc..

Est-ce que vous pouvez indiquer GeeDee, PierreJean, Christian, Eric, Dormeur ce que vous voyez et quels sont vos paramètres régionaux de windows et ceux utilisés le cas échéant dans excel ?


format.JPG

option excel.JPG

Un simple rechercher "." remplacer par "" (par macro ou pas) me remets tout ça sous forme de nombres alignés à droite.


Je suis bien d'accord, chez moi aussi ça fonctionne à merveille, le HIC est venu quand j'ai voulu automatiser la chose par une macro. (les triangles sont apparus).


La macro de pierrejean juste modifiée comme ci-dessous fonctionne du coup sans pb


Moi j'ai toujours les triangles qui apparraissent.




MJ13

Vous pouvez essayer cette macro à condition que le point soit bien une virgule en format français.


Chouette, elle à l'air de fonctionner. et je la trouve rapide.

Excel à des mystères.
Tout est parti de :
Pourquoi Excel me transforme les résultats, quand j'enregitre automatquement dans une macro une suite de commande qu'il comprend très bien en "mode direct", et que pour avoir le même comportement attendu, il faut passer par des commandes que je ne maitrise pas ?

Mais grace à vous j'évolue.

Merci

Christian


PS : J'ai pas encore trouvé la façon de recupérer dans un beau cadre les post précédents, désolé
 

Pièces jointes

  • format.JPG
    format.JPG
    64.2 KB · Affichages: 148
  • format.JPG
    format.JPG
    64.2 KB · Affichages: 151
  • option excel.JPG
    option excel.JPG
    19.6 KB · Affichages: 65
  • option excel.JPG
    option excel.JPG
    19.6 KB · Affichages: 66

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 424
Membres
103 206
dernier inscrit
diambote