Remplacement auto
Le
f4crw

Bonjour ou Bonsoir,
Quelqu'un peut-il m’expliquer pourquoi cette macro fonctionne bien =
en pas à pas et me laisse certains points en automatique et quoi chang=
er.
Merci
Régis
Sub Macro2()
'
'Remplacer les points par des virgules
Columns("D:F").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,=
_
ReplaceFormat:=False
End Sub
Quelqu'un peut-il m’expliquer pourquoi cette macro fonctionne bien =
en pas à pas et me laisse certains points en automatique et quoi chang=
er.
Merci
Régis
Sub Macro2()
'
'Remplacer les points par des virgules
Columns("D:F").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,=
_
ReplaceFormat:=False
End Sub
Peux-tu donner quelques exemples de "points" que la macro ne remplace pas?
Que contiennent ces cellules?
MichD
Sub Macro2()
'
'Remplacer les points par des virgules
Columns("D:F").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
End Sub
Peux-tu donner quelques exemples de "points" que la macro ne remplace pas?
Que contiennent ces cellules?
Cette macro remplacera seulement les points dans les cellules contenant du
texte.
Les cellules affichant du numérique ne seront pas touchées. La raison est
simple.
En VBA, on doit écrire un chiffre comme ceci : 123.23 avec un point comme
séparateur décimal. Dans la feuille de calcul, le chiffre devient 123,23
parce qu'Excel
tient compte des options régionales définies dans le panneau de
configuration de Windows.
Comme en français, le réparateur décimal par défaut (à moins de le modifier)
est la virgule,
le point du chiffre en VBA se transformera en virgule dans la feuille de
calcul.
'---------------------------------------------------------------
Sub test()
With Columns("D:F")
'remplace les virgules des nombres par des points.
'Les chiffres dans les cellules seront considérés comme du texte
'Faut faire cette opération en premier (si besoin)
.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
'Remplace tous les points par des virgules.
'Les chiffres des cellules auront des virgules, mais continueront de
s'afficher
'à gauche. Il faudra cliquer dans chacune des cellules pour que ces
dernières
's'affichent à droite...
.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
End With
End Sub
'---------------------------------------------------------------
MichD
Bonjour MichD,
Toutes ces cellules contienne du texte importer d'un fichier TXT contenant entre 2000 et 15000 lignes en général
Je répète que je dois remplacer les points par des virgules
la macro fonctionne bien en pas à pas
là où je ne comprends pas, c'est qu'elle me laisse certains point s une fois lancer et de manière aléatoire.
Dommage, car la méthode par remplacement est très rapide sur un g rand nombre de lignes et de colonnes.
Bonne journée et merci.
Régis
Rebonjour,
Il n'y a pas de virgules dans mon fichier txt d'origine.
Régis
des événements?
Utilise le site Cjoint.com et publie une petite partie de ton fichier où
certains points sont oubliés par la macro. Tu nous transmets ici
l'adresse que tu auras obtenue.
Sans rien voir, c'est difficile de te suggérer autre chose que j'ai
déjà mentionné.
MichD
Bonjour MichD,
avec =SUBSTITUE(A1;".";";") ça marche, mais c'est toujours du texte mêm après un copier collage spécial valeurs et je dois conv ertir en nombre pour que la macro suivante retrouve les valeurs que je rech erche.
Merci
Utilise le site Cjoint.com et publie une petite partie de ton fichier où
certains points sont oubliés par la macro. Tu nous transmets ici
l'adresse que tu auras obtenue. N'oublie pas d'indiquer dans le
classeur ce que tu veux obtenir comme résultat.
Sans rien voir, je ne peux pas t'aider davantage!
MichD
Bonjour MichD,
J'ai déposé un exemple de mon fichier comme tu la demander.
Merci encore pour ton aide.
Cordialement
Régis
http://www.cjoint.com/c/FLsndErduiC
Essaie ceci :
'-----------------------------------------------------------------------------
Sub test()
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
With Worksheets("Feuil1") 'Nom feuille à adapter au besoin
With .Range("D2:F34")
.Replace Chr(160), "", xlPart
.NumberFormat = "# ### ###.00"
.Replace what:=".", Replacement:=",", LookAt:=xlPart
.Replace what:=",", Replacement:=".", LookAt:=xlPart
End With
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
'-----------------------------------------------------------------------------
MichD
Non
Sub test()
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
With Worksheets("Feuil1") 'Nom feuille à adapter au besoin
With .Range("D2:F34")
.Replace Chr(160), "", xlPart
.NumberFormat = "# ### ###.00"
.Replace what:=".", Replacement:=",", LookAt:=xlPart
.Replace what:=",", Replacement:=".", LookAt:=xlPart
End With
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
ça ne marche pas , alors qu'en manuel avec ctrl + h rechercher . et remplacer par , là tout fonctionne très bien c'est étonnant.
Merci qm