point en virgule

Le
Sylian
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:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse

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 ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #19788191
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
Le #19789441
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 ?

FFO a écrit :
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
Le #19789511
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


FFO a écrit :
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 !!!!!



Mishell
Le #19790281
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

"Sylian" news:4a634da9$0$437$
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:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse

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
Le #19790271
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
Le #19790871
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

On 20 juil, 00:14, Sylian
J'ai également essayé les méthodes citées précédemment (par I sabelle
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

FFO a écrit :



> Salut à toi

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

> 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
Le #19793581
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.

LSteph a écrit :
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

On 20 juil, 00:14, 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

FFO a écrit :



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 !!!!!- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -





Sylian
Le #19797511
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:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse

End If
LSteph
Le #19797811
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/threa d/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

On 21 juil, 10:35, 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:=".", Loo kAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:úlse, SearchFor mat:úlse, _
         ReplaceFormat:úlse

     End If


Sylian
Le #19801291
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,




LSteph a écrit :
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

On 21 juil, 10:35, 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:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse

End If





Publicité
Poster une réponse
Anonyme