Discussion:
point en virgule
(trop ancien pour répondre)
Sylian
2009-07-19 16:45:29 UTC
Permalink
Bonjour,

Je cherche à transformer un point en virgule en VBA Excel
J'ai lancé l'enregistreur de macro qui m'a orienté vers un :

Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Si cela fonctionne bien en "direct", quand je lance cette simple macro
ma cellule comportant le chiffre -1.6535 se transforme en 16 535 !

Une solution pour que la macro fonctionne ?
FFO
2009-07-19 18:22:01 UTC
Permalink
Salut à toi

Aprés avoir sélectionné toutes tes données (en format texte obligatoirement)
Utilises ce code :

For Each c In Selection
c.Value = Replace(c, ".", ",")
Next

Celà devrait convenir

Dis moi !!!!!
Sylian
2009-07-19 21:56:01 UTC
Permalink
Malheureusement, j'obtient le même résultat les celulles marquées
initialement, "3.19205" deviennent "319 205" (sans les guillemets bien
entendu).
Je pense qu'il y a une histoire de format de celulle qui doit entrer en
jeu mais quoiqu'il en soit j'aimerai tout automatiser par VBA.

En tout cas merci pour le coup de main !
Une autre idée ?
Post by FFO
Salut à toi
Aprés avoir sélectionné toutes tes données (en format texte obligatoirement)
For Each c In Selection
c.Value = Replace(c, ".", ",")
Next
Celà devrait convenir
Dis moi !!!!!
Sylian
2009-07-19 22:14:08 UTC
Permalink
J'ai également essayé les méthodes citées précédemment (par Isabelle
entre autre) mais sans succès.

Voici un exemple des chiffres que je n'arrive pas à convertir en VBA
alors qu'un simple rechercher/remplacer fonctionne ...

http://www.cijoint.fr/cjlink.php?file=cj200907/cijL5nHArE.xls

Merci d'avance pour votre aide
Post by FFO
Salut à toi
Aprés avoir sélectionné toutes tes données (en format texte obligatoirement)
For Each c In Selection
c.Value = Replace(c, ".", ",")
Next
Celà devrait convenir
Dis moi !!!!!
FFO
2009-07-20 06:15:01 UTC
Permalink
Rebonjour à toi

Dans ton fichier les données n'étaient pas en format Texte comme je te
l'avait expressément recommandé
Ci-joint donc tu le trouveras corrigé avec mon code
Chez moi il fonctionne parfaitement

Fais des essais et dis moi !!!!!!

http://www.cijoint.fr/cjlink.php?file=cj200907/cijcrJnwgf.xls
LSteph
2009-07-20 08:38:42 UTC
Permalink
Bonjour,

Mishell a raison, et si on ouvre ton fichier en exemple c'est déjà
converti (puisque moi je suis en fr , virgule)
D'ailleurs si tu essaye dans ce cas de saisir -1.635
le pav num lui mettrra automatiquement une virgule
et si pour faire le point tu essaye d'utiliser
la partie alpha du clavier tu auras un message erreur:
Pour y arriver il te faudrait mettre un ' devant
'-1.635 qui donnera -1.635 mais s'allignera par défaut à gauche et
normal c'est du texte!

Cordialement.

--
lSteph
Post by Sylian
J'ai également essayé les méthodes citées précédemment (par Isabelle
entre autre) mais sans succès.
Voici un exemple des chiffres que je n'arrive pas à convertir en VBA
alors qu'un simple rechercher/remplacer fonctionne ...
http://www.cijoint.fr/cjlink.php?file=cj200907/cijL5nHArE.xls
Merci d'avance pour votre aide
Post by FFO
Salut à toi
Aprés avoir sélectionné toutes tes données (en format texte obligatoirement)
For Each c In Selection
c.Value = Replace(c, ".", ",")
Next
Celà devrait convenir
Dis moi !!!!!- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Sylian
2009-07-20 15:28:21 UTC
Permalink
Merci pour ta réponse :)
Mais comment rajouter un ' devant '-1.635 en VBA avec en simple "'" & ?
Sinon je ne comprends vraiment pas pourquoi la conversion fonctionne
très bien sous Excel 2007 et pas sous Excel 2003 ? Là je bloque vraiment.

En tout cas merci à tous pour vos interventions à chaque fois plus
lumineuses.
Post by Sylian
Bonjour,
Mishell a raison, et si on ouvre ton fichier en exemple c'est déjà
converti (puisque moi je suis en fr , virgule)
D'ailleurs si tu essaye dans ce cas de saisir -1.635
le pav num lui mettrra automatiquement une virgule
et si pour faire le point tu essaye d'utiliser
Pour y arriver il te faudrait mettre un ' devant
'-1.635 qui donnera -1.635 mais s'allignera par défaut à gauche et
normal c'est du texte!
Cordialement.
--
lSteph
Post by Sylian
J'ai également essayé les méthodes citées précédemment (par Isabelle
entre autre) mais sans succès.
Voici un exemple des chiffres que je n'arrive pas à convertir en VBA
alors qu'un simple rechercher/remplacer fonctionne ...
http://www.cijoint.fr/cjlink.php?file=cj200907/cijL5nHArE.xls
Merci d'avance pour votre aide
Post by FFO
Salut à toi
Aprés avoir sélectionné toutes tes données (en format texte obligatoirement)
For Each c In Selection
c.Value = Replace(c, ".", ",")
Next
Celà devrait convenir
Dis moi !!!!!- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Sylian
2009-07-21 08:35:25 UTC
Permalink
Voici une solution qui peut-être aidera les personnes qui auront connu
le même problème que moi.

1 - Il faut déterminer la version d'Excel utilisé
2 - pour 2002-2003, il faut changer les paramètres dans les options
d'Excels pour forcer le séparateur décimal de se mettre en virgule et
non en point.
3 - pour excel 2007, il faut remplacer le point par ... par un autre
point (celui du pavé numérique) et cela a pour effet de tout afficher
avec des virgules.

1 ' Teste la version d'Excel 2003 ou 2007 ?

Dim XL2007 as Boolean
If Val(Application.Version) >= 11 Then
XL2007 = True
Else
XL2007 = False
End If

2 'pour Excel 2002/2003
If XL2007 = False Then
Application.DecimalSeparator = ","
End If

3 ' Pour Excel 2007

If XL2007 = True Then

Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

End If
LSteph
2009-07-21 09:09:56 UTC
Permalink
Bonjour,

C'est vrai aussi pour d'autres versions et cela était déjà connu voir
ma réponse dans un autre fil du 15/02
http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread/thread/8340667ff469b5b7/66ab09c995ee6f24?lnk=gst&q=lSteph%2Breplace%2B+what%3A%3D%2B%22.%22#66ab09c995ee6f24

toutefois cela n'a rien à voir il me semble avec le pb tel qu'il se
présente ici selon ton fichier exemple qui
se solutionne simplement sans nécessiter de conversion, par le choix
des bons paramêtres régionaux comme l'a souligné Mishell

Cordialement.

--
lSteph
Post by Sylian
Voici une solution qui peut-être aidera les personnes qui auront connu
le même problème que moi.
1 - Il faut déterminer la version d'Excel utilisé
2 - pour 2002-2003, il faut changer les paramètres dans les options
d'Excels pour forcer le séparateur décimal de se mettre en virgule et
non en point.
3 - pour excel 2007, il faut remplacer le point par ... par un autre
point (celui du pavé numérique) et cela a pour effet de tout afficher
avec des virgules.
1 ' Teste la version d'Excel 2003 ou 2007 ?
Dim XL2007 as Boolean
If Val(Application.Version) >= 11 Then
XL2007 = True
Else
XL2007 = False
End If
2 'pour Excel 2002/2003
If XL2007 = False Then
Application.DecimalSeparator = ","
End If
3 ' Pour Excel 2007
     If XL2007 = True Then
         Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     End If
Sylian
2009-07-21 15:26:45 UTC
Permalink
Bonjour et Merci LStpeh pour ta remarque.
J'ai bien aimé le lien que tu as mis avec tes explications et tes
différents codes.
Seulement pour mon fichier en exemple, changer les paramètres régionaux
suffit sous XL2003 mais cela ne fait rien sous mon XL2007 (étrangement).
C'est pourquoi j'ai opté par cette méthode alternative car je devrais
importer pas mal de fichiers dans le genre.

Cordialement,
Post by Sylian
Bonjour,
C'est vrai aussi pour d'autres versions et cela était déjà connu voir
ma réponse dans un autre fil du 15/02
http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread/thread/8340667ff469b5b7/66ab09c995ee6f24?lnk=gst&q=lSteph%2Breplace%2B+what%3A%3D%2B%22.%22#66ab09c995ee6f24
toutefois cela n'a rien à voir il me semble avec le pb tel qu'il se
présente ici selon ton fichier exemple qui
se solutionne simplement sans nécessiter de conversion, par le choix
des bons paramêtres régionaux comme l'a souligné Mishell
Cordialement.
--
lSteph
Post by Sylian
Voici une solution qui peut-être aidera les personnes qui auront connu
le même problème que moi.
1 - Il faut déterminer la version d'Excel utilisé
2 - pour 2002-2003, il faut changer les paramètres dans les options
d'Excels pour forcer le séparateur décimal de se mettre en virgule et
non en point.
3 - pour excel 2007, il faut remplacer le point par ... par un autre
point (celui du pavé numérique) et cela a pour effet de tout afficher
avec des virgules.
1 ' Teste la version d'Excel 2003 ou 2007 ?
Dim XL2007 as Boolean
If Val(Application.Version) >= 11 Then
XL2007 = True
Else
XL2007 = False
End If
2 'pour Excel 2002/2003
If XL2007 = False Then
Application.DecimalSeparator = ","
End If
3 ' Pour Excel 2007
If XL2007 = True Then
Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
LSteph
2009-07-21 16:05:34 UTC
Permalink
Merci! C'est bon à savoir.

@+

--
lSteph
Post by Sylian
Bonjour et Merci LStpeh pour ta remarque.
J'ai bien aimé le lien que tu as mis avec tes explications et tes
différents codes.
Seulement pour mon fichier en exemple, changer les paramètres régionaux
suffit sous XL2003 mais cela ne fait rien sous mon XL2007 (étrangement).
C'est pourquoi j'ai opté par cette méthode alternative car je devrais
importer pas mal de fichiers dans le genre.
Cordialement,
Post by Sylian
Bonjour,
C'est vrai aussi pour d'autres versions et cela était déjà connu voir
ma réponse dans un autre fil du 15/02
http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread...
toutefois cela n'a rien à voir il me semble avec le pb tel qu'il se
présente ici selon ton fichier exemple qui
se solutionne simplement sans nécessiter de conversion, par le choix
des bons paramêtres régionaux comme l'a souligné Mishell
Cordialement.
--
lSteph
Post by Sylian
Voici une solution qui peut-être aidera les personnes qui auront connu
le même problème que moi.
1 - Il faut déterminer la version d'Excel utilisé
2 - pour 2002-2003, il faut changer les paramètres dans les options
d'Excels pour forcer le séparateur décimal de se mettre en virgule et
non en point.
3 - pour excel 2007, il faut remplacer le point par ... par un autre
point (celui du pavé numérique) et cela a pour effet de tout afficher
avec des virgules.
1 ' Teste la version d'Excel 2003 ou 2007 ?
Dim XL2007 as Boolean
If Val(Application.Version) >= 11 Then
XL2007 = True
Else
XL2007 = False
End If
2 'pour Excel 2002/2003
If XL2007 = False Then
Application.DecimalSeparator = ","
End If
3 ' Pour Excel 2007
     If XL2007 = True Then
         Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     End If- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Mishell
2009-07-20 06:11:46 UTC
Permalink
C'est parce que tu fais disparaître le séparateur décimal qui est le point
dans tes préférences (Options régionales).
Si tu veux la virgule comme séparateur décimal, modifie cette option dans
les Options régionales de Windows.

Mishell
Post by Sylian
Bonjour,
Je cherche à transformer un point en virgule en VBA Excel
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Si cela fonctionne bien en "direct", quand je lance cette simple macro ma
cellule comportant le chiffre -1.6535 se transforme en 16 535 !
Une solution pour que la macro fonctionne ?
Continuer la lecture sur narkive:
Loading...