Urgent: Remplace points par virgules-VBAExcel
kaaille
-
kaaille -
kaaille -
Bonjour !
J'ecume tous les sites de prog pour savoir comment intégrer dans une macro le remplacement des points par des virgules.. J'ai vu que tompols avait le même problème, et qu'il a réussi à le résoudre tout seul, mais j'ai essayé sans succès... Quelqu'un pourrait m'aider?? J'ai bien une facon, mais avec le nombre de données que j'ai, c'est 10 fois trop long :
Function RemplacePntVir(NomOnglet)
Sheets(NomOnglet).Select
Range("G1:I1").Select
Range(Selection, Selection.End(xlDown)).Select
FinLigne = Selection.Rows.Count
Range("G1").Select
For j = 2 To FinLigne
g = Range("G" & j).Cells
g = Replace(g, ".", ",")
Range("G" & j).Cells = g
Next j
End Function
J'AI BESOIN D'AIDE SVP !!!!!!!
Merci d'avance
J'ecume tous les sites de prog pour savoir comment intégrer dans une macro le remplacement des points par des virgules.. J'ai vu que tompols avait le même problème, et qu'il a réussi à le résoudre tout seul, mais j'ai essayé sans succès... Quelqu'un pourrait m'aider?? J'ai bien une facon, mais avec le nombre de données que j'ai, c'est 10 fois trop long :
Function RemplacePntVir(NomOnglet)
Sheets(NomOnglet).Select
Range("G1:I1").Select
Range(Selection, Selection.End(xlDown)).Select
FinLigne = Selection.Rows.Count
Range("G1").Select
For j = 2 To FinLigne
g = Range("G" & j).Cells
g = Replace(g, ".", ",")
Range("G" & j).Cells = g
Next j
End Function
J'AI BESOIN D'AIDE SVP !!!!!!!
Merci d'avance
5 réponses
Cells.Select
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=Fals
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=Fals
Random,
j'avais déjà essayé ce code, mais malheureusement il ne convient pas du tout. Quand je lance la macro sur les données suivantes :
-0.551600
2.013400
15.525700
-0.941400
il me donne
-0,551600
2 013 400
15 525 700
-0,941400
C'est bon pour les données inférieures à 1, mais pas pour le reste.. :S
Si tu as une autre idée.. Merci qd même !!
Lol !
Kaaille
j'avais déjà essayé ce code, mais malheureusement il ne convient pas du tout. Quand je lance la macro sur les données suivantes :
-0.551600
2.013400
15.525700
-0.941400
il me donne
-0,551600
2 013 400
15 525 700
-0,941400
C'est bon pour les données inférieures à 1, mais pas pour le reste.. :S
Si tu as une autre idée.. Merci qd même !!
Lol !
Kaaille
Salut,
Quel est exactement ton pb ? Est-ce simplement le temps d'éxécution ???
A+
Quel est exactement ton pb ? Est-ce simplement le temps d'éxécution ???
A+
Salut Tompols,
En effet, c'est le temps d'exécution qui me pose un problème, car j'ai beaucoup de données.
Si je le fais a la main (edition, remplacer...) je ne mets que qq secondes à tout faire défiler, mais je dois le faire pour 15 fichiers différents.
Si je le fais par la macro que j'ai publié, pour chaque fichier (moins de 100 données), je mets environ 3 min. Multiplier par 15, ca fait trop de temps à attendre.. (ds les 3/4h...ce qui est démesurer)..
C'est pour ca que je cherche un moyen plus efficace, sinon ca se fera à la main, mais ce n'est pas passionant poru les utilisateurs....
A bientot,
Kaaille
En effet, c'est le temps d'exécution qui me pose un problème, car j'ai beaucoup de données.
Si je le fais a la main (edition, remplacer...) je ne mets que qq secondes à tout faire défiler, mais je dois le faire pour 15 fichiers différents.
Si je le fais par la macro que j'ai publié, pour chaque fichier (moins de 100 données), je mets environ 3 min. Multiplier par 15, ca fait trop de temps à attendre.. (ds les 3/4h...ce qui est démesurer)..
C'est pour ca que je cherche un moyen plus efficace, sinon ca se fera à la main, mais ce n'est pas passionant poru les utilisateurs....
A bientot,
Kaaille
Salut,
Tu peux essayer comme ça :
C'est du bricolage mais ça à l'air de tourner en a peu près 2 min pour une colonne entiere -65536 cellules - (insertion de colonne, puis utilisation de la foncction substitue, puis copier/coller valeurs et suppression de la colonne supplémentaire).
Est-ce que ça peut te suffire ?
A+
Tom
Tu peux essayer comme ça :
Sub RemplacePntVir() Application.ScreenUpdating = False Columns("H:H").Select Selection.Insert Shift:=xlToRight For j = 2 To 65536 Range("H" & j).FormulaR1C1 = "=SUBSTITUTE(RC[-1],""."","","")" Next j Columns("H:H").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("G:G").Select Selection.Delete Shift:=xlToLeft Application.ScreenUpdating = True End Sub
C'est du bricolage mais ça à l'air de tourner en a peu près 2 min pour une colonne entiere -65536 cellules - (insertion de colonne, puis utilisation de la foncction substitue, puis copier/coller valeurs et suppression de la colonne supplémentaire).
Est-ce que ça peut te suffire ?
A+
Tom
Salut Tom !
J'ai adopter ton prog, mais pour des petis fichiers (140 données). Qd je le lance sur 1000 données, ca n'avance plus.. Ce sont les limites de VBA, ce n'est pas grave..
Merci encore, mais je continue tout de même à chercher (pour optimiser les 1000 données) ! Je ne m'avoue pas vaincue !
Bonne aprem !
Kaaille
J'ai adopter ton prog, mais pour des petis fichiers (140 données). Qd je le lance sur 1000 données, ca n'avance plus.. Ce sont les limites de VBA, ce n'est pas grave..
Merci encore, mais je continue tout de même à chercher (pour optimiser les 1000 données) ! Je ne m'avoue pas vaincue !
Bonne aprem !
Kaaille
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut kaaille,
Chez moi ça tourne pas trop mal : env. 2 min pour 65536 données.
Tu peux le modifier pour qu'il ne travaille que sur les cellules non-vides :
A+
Tom
Chez moi ça tourne pas trop mal : env. 2 min pour 65536 données.
Tu peux le modifier pour qu'il ne travaille que sur les cellules non-vides :
Sub RemplacePntVir() Application.ScreenUpdating = False Columns("H:H").Select Selection.Insert Shift:=xlToRight For j = 2 To 65536 If Not IsEmpty(Range("G" & j)) Then Range("H" & j).FormulaR1C1 = "=SUBSTITUTE(RC[-1],""."","","")" Next j Columns("H:H").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("G:G").Select Selection.Delete Shift:=xlToLeft Application.ScreenUpdating = True End Sub
A+
Tom
Heloo !
Malheureusement, je n'ai pas de cellules non vides, mais je note l'idée pour un prochain prog, j'en aurai certainement besoin !
J'ai changé un peu ton prog, il tourne plus vite comme ca.. Je devais changer les données de 3 colonnes. C'est meme plus rapide que de passer par une fonction, j'ai essaye, et c un meilleure.
Le fait de ne pas insérer une colonne entre G et H, mais de mettre les données plus loin accelere aussi le prog.
bon ce n'est pas optimale, mais c deja pas mal !!
Sub RemplacePntVir2()
'Application.ScreenUpdating = False
colonneG = "G"
colonneAA = "AA"
Range(colonneG & "2").Select
Range(Selection, Selection.End(xlDown)).Select
Finligne = Selection.Rows.Count
For j = 2 To Finligne
Range(colonneAA & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneH = "H"
colonneAB = "AB"
For j = 2 To Finligne
Range(colonneAB & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneI = "I"
colonneAC = "AC"
For j = 2 To Finligne
Range(colonneAC & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
Range(colonneAA & "2:" & colonneAC & Finligne).Select
Selection.Copy
Range(colonneG & "2 :" & colonneI & Finligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns(colonneAA & ":" & colonneAC).Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Merci beaucoup !!
Kaaille
Malheureusement, je n'ai pas de cellules non vides, mais je note l'idée pour un prochain prog, j'en aurai certainement besoin !
J'ai changé un peu ton prog, il tourne plus vite comme ca.. Je devais changer les données de 3 colonnes. C'est meme plus rapide que de passer par une fonction, j'ai essaye, et c un meilleure.
Le fait de ne pas insérer une colonne entre G et H, mais de mettre les données plus loin accelere aussi le prog.
bon ce n'est pas optimale, mais c deja pas mal !!
Sub RemplacePntVir2()
'Application.ScreenUpdating = False
colonneG = "G"
colonneAA = "AA"
Range(colonneG & "2").Select
Range(Selection, Selection.End(xlDown)).Select
Finligne = Selection.Rows.Count
For j = 2 To Finligne
Range(colonneAA & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneH = "H"
colonneAB = "AB"
For j = 2 To Finligne
Range(colonneAB & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneI = "I"
colonneAC = "AC"
For j = 2 To Finligne
Range(colonneAC & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
Range(colonneAA & "2:" & colonneAC & Finligne).Select
Selection.Copy
Range(colonneG & "2 :" & colonneI & Finligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns(colonneAA & ":" & colonneAC).Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Merci beaucoup !!
Kaaille
Heloo !
Malheureusement, je n'ai pas de cellules non vides, mais je note l'idée pour un prochain prog, j'en aurai certainement besoin !
J'ai changé un peu ton prog, il tourne plus vite comme ca.. Je devais changer les données de 3 colonnes. C'est meme plus rapide que de passer par une fonction, j'ai essaye, et c un meilleure.
Le fait de ne pas insérer une colonne entre G et H, mais de mettre les données plus loin accelere aussi le prog.
bon ce n'est pas optimale, mais c deja pas mal !!
Sub RemplacePntVir2()
'Application.ScreenUpdating = False
colonneG = "G"
colonneAA = "AA"
Range(colonneG & "2").Select
Range(Selection, Selection.End(xlDown)).Select
Finligne = Selection.Rows.Count
For j = 2 To Finligne
Range(colonneAA & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneH = "H"
colonneAB = "AB"
For j = 2 To Finligne
Range(colonneAB & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneI = "I"
colonneAC = "AC"
For j = 2 To Finligne
Range(colonneAC & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
Range(colonneAA & "2:" & colonneAC & Finligne).Select
Selection.Copy
Range(colonneG & "2 :" & colonneI & Finligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns(colonneAA & ":" & colonneAC).Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Merci beaucoup !!
Kaaille
Malheureusement, je n'ai pas de cellules non vides, mais je note l'idée pour un prochain prog, j'en aurai certainement besoin !
J'ai changé un peu ton prog, il tourne plus vite comme ca.. Je devais changer les données de 3 colonnes. C'est meme plus rapide que de passer par une fonction, j'ai essaye, et c un meilleure.
Le fait de ne pas insérer une colonne entre G et H, mais de mettre les données plus loin accelere aussi le prog.
bon ce n'est pas optimale, mais c deja pas mal !!
Sub RemplacePntVir2()
'Application.ScreenUpdating = False
colonneG = "G"
colonneAA = "AA"
Range(colonneG & "2").Select
Range(Selection, Selection.End(xlDown)).Select
Finligne = Selection.Rows.Count
For j = 2 To Finligne
Range(colonneAA & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneH = "H"
colonneAB = "AB"
For j = 2 To Finligne
Range(colonneAB & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
colonneI = "I"
colonneAC = "AC"
For j = 2 To Finligne
Range(colonneAC & j).FormulaR1C1 = "=SUBSTITUTE(RC[-20],""."","","")"
Next j
Range(colonneAA & "2:" & colonneAC & Finligne).Select
Selection.Copy
Range(colonneG & "2 :" & colonneI & Finligne).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns(colonneAA & ":" & colonneAC).Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Merci beaucoup !!
Kaaille
Non, je n'ai pas essayé, mais je ne vois pas trop ce que tu me conseilles de faire.. Pourrais-tu me donner plus de détails ?
Merci en tout cas de ta réponse !
Perrine