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

Bonjour

Je suppose que chez toi le séparateur décimal est la virgule ?
Quand j'ouvre ton tableau 1 (tu aurais pu tout mettre dans le même classeur c'est quand même plus pratique que de devoir en ouvrir 3 pour voir le pb...) les nombres sont en texte (alignés à gauche) mais je vois un point, pas une virgule. Dans aucun de tes 3 classeurs on ne trouve les données de départ, la macro ou les macros testées et les données d'arrivée qui ne te vont pas.

Que la macro qui consiste à ajouter 0 soit longue je veux bien le croire si tu travailles sur toute la colonne A. Il faut toujours restreindre aux cellules contenant des valeurs, sinon tu travailles sur plus d'1 million de lignes pour rien.
 

ERIC S

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

Bonjour

et ce code? (pour colonne A)

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



edit méthode 6 Ce lien n'existe plus
 
Dernière édition:

Dormeur74

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

Bonjour tout le monde,

Si tu veux le faire à l'aide d'une macro tu peux essayer ceci :

Code:
Sub Macro1()
    Dim C As Range
    Dim Valeur As String
    
    For Each C In Range("A1:C40")
        Valeur = C.Value
        If Valeur <> "" Then
            If InStr(Valeur, ".") <> 0 Then
                Mid(Valeur, InStr(Valeur, "."), 1) = ","
                C.Value = Valeur
            End If
        End If
    Next
End Sub
 

Papou-net

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

Bonjour christian95, Misange, ERIC S,

Pour le reste, je ne comprends pas la raison des petits triangles mais en modifiant deux fois de suite le séparateur décimal, ça les supprime et les cellules passent au format numérique. J'ai tenté une méthode de conversion directe, mais sans succès pour le moment.
Code:
Private Sub CommandButton1_Click()
With Columns("A:C").SpecialCells(xlCellTypeConstants)
  .Replace What:=".", Replacement:=",", LookAt:=xlPart, _
  SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False
  .Replace What:=",", Replacement:=".", LookAt:=xlPart, _
  SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False
  .NumberFormat = "0.0"
End With
End Sub
Par ailleurs, et pour illustrer le conseil de Misange, j'ai "ciblé" les cellules non vides des colonnes A:C, ce qui devrait accélérer assez significativement les opérations.

Cordialement.

Edit : salut à toi, Dormeur74.
 

christian95

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

Bonjour,


Je vous remercie de vos reponses et commentaires.

Désolé pour les trois fichiers séparés, c'est vrai je n'ai pas pensé aux onglets, (obnubilé par cette conversion sans doute...)
Pour le séparateur, je me suis mis a la norme europeenne, donc c'est la virgule pour mon boulot.

"Que la macro qui consiste à ajouter 0 soit longue je veux bien le croire si tu travailles sur toute la colonne A. Il faut toujours restreindre aux cellules contenant des valeurs, sinon tu travailles sur plus d'1 million de lignes pour rien. "

je suis d'accord mais le fichier en test n'est qu'un p'tit bout, je supprimr déjà un tas de colonnes vides auparavent et je ne sais jamais à l'avance le nombre de lignes que va avoir le fichier que je reçoit.( macro à l'étude pour compter les lignes utiles)


Je vais essayer vos astuces et je vous tiens au courant ( heu... pas avant lundi je quitte le boulot)

Amicalement
 

christian95

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

Bonjour,

J'ai essayé les trois méthodes, verdict:

Méthode de ERIC S :--> ça fonctionne

Méthode de Dormeur74 :--> J'ai des triangles qui apparraissent

Méthode de Papou-net :--> ça fonctionne avec l'apparition de tous les triangles puis ils disparraissent à l'execution de la 3éme lignes.

Je n'ai pas le niveau pour savoir et expliquer les diffentes subtilité des programmes, mais je vais coller les bonnes lignes dans ma macro et ça devrait rouler.

Merci à vous.
 

christian95

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

Bonjour,

J'ai associé le programme à ma macro, mais maintenant il se passe une chose étrange, des valeurs décimales se retrouvent sans virgule.
Ex: 3.169 --> devient --> 3 169

J'ai regroupé cela dans un seul fichier.

Cordialement
 

Pièces jointes

  • test Restitution.xlsx
    15.5 KB · Affichages: 65

pierrejean

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

Bonsoir à tous

Macro à tester:

Code:
Sub epurage()
Application.ScreenUpdating = False
dercol = Cells(1, Columns.Count).End(xlToLeft).Column
 For n = dercol To 1 Step -1
   If Cells(Rows.Count, n).End(xlUp).Row = 1 Then Columns(n).Delete
 Next
 For Each cel In Range("A1").CurrentRegion
   cel.Value = Replace(cel.Value, ".", ",")
   If IsNumeric(cel.Value) Then cel.Value = CDbl(cel.Value)
 Next
Application.ScreenUpdating = True
End Sub
 

Modeste geedee

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

Bonsour®
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

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

:confused: voici la macro que j'ai utilisé
no problemo....
ne sont traité que les cellules contenant quelquechose et differentes d'une formule

VB:
Sub Macro1()
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
 

pierrejean

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

Re

Toutes mes excuses !!
ma macro ne fonctionne pas plus que les precedentes
Il semble que la virgule soit interpretée par Excel comme le separateur de millier
Je continue a chercher
 

Misange

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

Bonsoir à tous

J'imagine que nous ne voyons pas tous la même chose en ouvrant le classeur de Christian en fonction de nos paramètres régionaux. Chez moi quand j'ouvre le classeur, sur la page "origine", je n'ai pas de virgule du tout. J'ai des nombres de type -3.874 alignés à gauche et considérés comme du texte. Un simple rechercher "." remplacer par "" (par macro ou pas) me remets tout ça sous forme de nombres alignés à droite.
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 ?
Chez moi c'est . le séparateur décimal et l'espace le séparateur de milliers.

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


Code:
Sub Macro1()
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
 
Dernière édition:

pierrejean

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

Bonjour Misange

1) Rendons à Cesar ce qui est à Jules: La macro que tu cites est de Modeste Geedee (même s'il pratique beaucoup la modestie ,je ne le consideres surement pas comme modeste !!!)
2) testée sur Excel 2007 elle sort des nombres corrects à l'exception de ceux du type 3.169 qui deviennet 3169
3) testée avec 2010 le comportement est des plus curieux puisqu'il ne sort des nombres que sur la ligne 9 et toujours comme 3169
Sur Excel mes options sont: utiliser les separateurs systeme
Pour windows , je suis en XP et les options regionales ,pour decimal et espace pour milliers
 

Modeste geedee

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

Bonsour®

Misange à dit:
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 ?

mes options Windows (seven)
Capture3.JPG
mes options EXCEL 2007Capture.JPGce que j'obtiens en ouvrant le fichier initial
Capture2.JPG

pierrejean à dit:
même s'il pratique beaucoup la modestie ,je ne le consideres surement pas comme modeste !!!

:eek: il ne s'agit que d'un pseudo...
j'aurai pu choisir calimero ou prédator, mais ce n'aurait pas reflété ma personnalité non plus :cool:...
il s'agit simplement de mon saint patron de naissance:D
que j'ai choisi par atavisme, mais c'est dur, c'est un cilice... :rolleyes:


"Soit modeste ! C'est le genre d'orgueuil qui déplaît le moins." [Jules Renard]
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    16.3 KB · Affichages: 110
  • Capture.JPG
    Capture.JPG
    16.3 KB · Affichages: 112
  • Capture2.JPG
    Capture2.JPG
    37.5 KB · Affichages: 117
  • Capture2.JPG
    Capture2.JPG
    37.5 KB · Affichages: 118
  • Capture3.JPG
    Capture3.JPG
    70.3 KB · Affichages: 121
  • Capture3.JPG
    Capture3.JPG
    70.3 KB · Affichages: 124
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 655
Messages
2 111 602
Membres
111 216
dernier inscrit
mauphico