probleme pour remplacer des "." par des ","

sigporson

XLDnaute Nouveau
Bonjour,

1 - Je travaille avec des fichier provenant de internet, et j'ai un probleme lorsque j'utilise ma macro pour remplacer les points par des virgules dans 3 colonnes, la macro fonctionne bien pour une colonne mais supprime simplement les points sans les rempacer par une virgule dans les deux autre colonnes. Pourtant les trois colonnes ont le meme formats.

voici ma macro :
sub remplacer ()
Columns("G:I").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
end sub

2 - De plus une fois la modification faite je suis obliger de tout reséléctionner afin de convertir les données en nombre, existe-t-il un programme permetant de supprimer cette operation ?
 

pierrejean

XLDnaute Barbatruc
Re : probleme pour remplacer des "." par des ","

bonjour sigporson

une macro a tester:

Code:
Sub remplacer()
 
Dim m as Integer
Dim n as Integer
 For m = 7 To 9
 x = Cells(65536, m).End(xlUp).Row
  For n = 1 To x
   Cells(n, m).Value = Replace(Cells(n, m), ".", ",")
   Cells(n, m).NumberFormat = "0.00"
  Next n
 Next m
End Sub
 

JeanMikael

XLDnaute Junior
Re : probleme pour remplacer des "." par des ","

Bonjour sigporson

Chez moi ce code marche bien essai voir si sa te convient, il permet juste de remplacer des points par des virgules sur toutes les colonnes et pour chaque cellule :

Code:
Sub Replacer_Point_Par_Virgule()
Application.ScreenUpdating = false   
 Range("A1:Z65536").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
Range("A1").Select
Application.ScreenUpdating = True
End Sub

A+
Cordialement
Jean-Mikaël
 

sigporson

XLDnaute Nouveau
Re : probleme pour remplacer des "." par des ","

apres le teste de vos deux programmes, le resultat est le meme :
Dans ma colonne "i" les points sont bien remplasser par des virgules
dans les colonnes "g" et "h", les points sont juste supprimer et non remplacer par une virguler.
J'ai contourné le probleme en incluant dans mons programme la fonction "text to columns" pour un "concatener" en incluant une virgule devant les decimales. Ca alourdi le programme mais ca fonctionne:p.
voici mon programme dans son entier, je sais il est tres long :(

Code:
Sub site()

'enregistrement du nom de l'onglet actif en memoir
mafeuille = ActiveSheet.Name

'on renomme l'onglet avec un nom predefini
    Sheets(mafeuille).Select
    Sheets(mafeuille).Name = "Site"

'on explase le text contenu dans une cellule dans plusieur celule
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
    
'on supprime les 6 premieres lignes
    Rows("1:6").Select
    Range("A6").Activate
   Selection.Delete Shift:=xlUp
    
'on remplace les points par des virgules dans la colonnes i
    Columns("i:i").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
'on compte le nombre de ligne active de l'onglet
Range("a1").Select
Selection.CurrentRegion.Select
monnombre = Selection.Rows.Count
    
 
    'cette partie est utiliser pour supprimer des espaces,
    'car cela etait impossible avec la fonction supprime espace de excel.
    'je scinde la colonne a chaque espace,
    'et j'utilise la fonction concatener
    'afin de regrouper dans une meme cellule les infos.
    
    Columns("e:e").Select
    Selection.Copy
    Range("l1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.TextToColumns Destination:=Range("l1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=True, Other:=False, FieldInfo:= _
        Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
        True
    Range("p2").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-3],RC[-2],RC[-1])"
    Range("p2").Select
    Selection.Copy
    Range("p3:p" & monnombre).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
    'copie du titre de la colonne
    Range("p1").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-4],"" "",RC[-3])"
    Columns("p:p").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("p:p").Select
    Selection.Copy
    Application.CutCopyMode = False
    Selection.Cut
    Columns("e:e").Select
    ActiveSheet.Paste
    Columns("A:p").Select
    Columns("A:p").EntireColumn.AutoFit
    Range("A2").Select
    Columns("j:o").Select
    Selection.Delete Shift:=xlToLeft
    
    
    'cette partie supprime les point et les remplace par des virgules
    'c'est long mais ca fonctionne..... mais c'est long
    
    Columns("H:J").Select
    Selection.Insert Shift:=xlToRight
    Columns("G:G").Select
    Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :=".", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Columns("H:J").Select
    Selection.Delete Shift:=xlToLeft
    Columns("I:K").Select
    Selection.Insert Shift:=xlToRight
    Columns("H:H").Select
    Selection.TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :=".", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],"","",RC[-1])"
    Range("J2").Select
    Selection.Copy
    Range("J3:J" & monnombre).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "=+RC[-2]"
    Columns("J:J").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("H:I").Select
    Range("I1").Activate
    Selection.Delete Shift:=xlToLeft
    Columns("I:I").Select
    Selection.Delete Shift:=xlToLeft
    Columns("G:I").Select
    
    'modification de la presentation du fichier
    Range("A1:I1").Select
    Selection.Interior.ColorIndex = 6
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    Columns("A:A").Select
    Selection.NumberFormat = "#,##0"
    Range("A1").Select
    
    Columns("A:I").Select
    Columns("A:I").EntireColumn.AutoFit
    
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : probleme pour remplacer des "." par des ","

bonjour

il est anormal que le comportement de nos macros soit different selon la colonne traitée

peux-tu nous faire passer ton fichier avec quelques lignes representatives (sans données confidentielles)
 

pierrejean

XLDnaute Barbatruc
Re : probleme pour remplacer des "." par des ","

bonjour sigporson

il aurait été bon de nous preciser au depart que tu traites un fichier .csv

d'ailleurs il y a un phenomene curieux avec ce type de fichier (ou ton fichier je ne sais pas !!)

lorsque je l'ouvre directement par clic dans l'explorateur je l'obtiens avec des données en colonne

lorsque je l'ouvre par fichier > ouvrir j'obtiens uniquement la colonne A

dans ce cas, pour avoir le contenu en colonnes on peut utiliser la macro suivante:

Code:
Sub test()
For n = 7 To Range("A65536").End(xlUp).Row
 x = Split(Range("A" & n), ",")
 For m = 0 To UBound(x)
  Cells(n, 2 + m) = x(m)
 Next m
Next n
End Sub

veux-tu tester cela
 

sigporson

XLDnaute Nouveau
Re : probleme pour remplacer des "." par des ","

Merci beaucoups Pierrejean pour ton aide, ce programme fonctionne tres bien.
Toutes mes excuses, il est vrai que j'ai completement oublier de mentionner que le fichier était en "*.csv".
Par contre tous les fichier en "*.csv" ont les données en colonne car je telecharge les fichiers d'un site internet.
 

Discussions similaires

Réponses
1
Affichages
150

Statistiques des forums

Discussions
313 003
Messages
2 094 320
Membres
105 992
dernier inscrit
dpstxyz