Canger les points en virgules

Résolu
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011 - 2 mars 2006 à 13:56
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011 - 3 mars 2006 à 11:10
Je voudrai, dans une macro, faire le changement du point en virgule sur une série de nombre sur un classeur excel.
Lorsque je fais un enregistrement de macro sous excel et que je fais manuellement Edition->remplacer->remplacer tout, ca marche nickel. Par contre, quand je relance la macro, ca ne fonctionne plus.
Lorsque j'execute la macro, le point est bien changé en virgule, seulement, tous les nombres sont multipliés par 1000.

La commande enregistrée automatiquement par excel est :
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Je penses qu'il y a un problème de format de nombre, mais en changeant TOUS les paramètre possibles sous excel, rien n'y fait.
Je ne considère pas comme une solution de changer les paramètre régionaux de windows!

J'ai même essayé la fonction Selection.Replace avec juste les paramètres "What" et "replacement", mais le même problème se pose. même quand je converti le format de la selection en texte, toujours le même problème. Comment pourais-je faire?!?
Merci de votre aide!
--==IvanTil==--

7 réponses

lhurgoyf_37 Messages postés 12 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 3 mars 2006
3 mars 2006 à 09:02
Salut

voici une petite macro qui devrais régler ton problème.

'---------------------------------------------------------------------------------------
' Procedure : Remp_Pts_Par_Virgule
' DateTime : 03/03/2006
' Author : Florent
' Purpose : Remplacement d'un point par une virgule
'---------------------------------------------------------------------------------------
Sub Remp_Pts_Par_Virgule()
Dim ZoneSelectionne
Dim TabTexte() As String
Dim Resultat As String
Dim NbElement As Integer
Dim Inc As Integer

' Exploration de toute la zone sélectionnée
For Each ZoneSelectionne In Selection.Cells
' Suppression du cas où la cellule ne contiens rien
If ZoneSelectionne.Value <> "" Then
' Décomposition du contenu de la case en sous-éléments
TabTexte = Split(ZoneSelectionne.Value, ".")
' Intialisation de varable pour la suite du programme
Inc = 0
NbElement = UBound(TabTexte)
' Détermination de l'élément de base à insérer
Resultat = TabTexte(Inc)
' Test si le tableau contiens plus d'un élément
If NbElement > 0 Then
' Exploration du tableau pour faire le remplacement
For Inc = 1 To NbElement
' Concaténation des éléments supplémentaire
Resultat = Resultat & "," & TabTexte(Inc)
Next
End If
' Ecriture du résultat dans la feuille excel
ZoneSelectionne.Value = Resultat
End If
Next
End Sub

La limite de cette macro viendra du faites que si une des cases contiens un élément du type "12.12.12.12", elle remplecera tous les points par une virgule. Mais bon c'est une base de travail. Tu n'as plus qu'a l'adapter pour ton cas de figure.

Le grand FLO
3
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
2 mars 2006 à 17:20
Bonjour,

A priori c'est normal car lorsque tu le fait manuellement tu précise remplacer tout
hors ta macro ne vérifie que la cellule actuellement sélectionnée...

-- Pourquoi faire simple quand on peut faire compliquer --
0
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
3 mars 2006 à 07:49
Ma macro me selectionne toute une zone avant de faire le remplacement.

En plus, si tu avais bien lu, je signale que tous les points sont bien
transformés en virgule, seulement, il y a une multiplication par 1000
pour les valeurs supérieures à 1.

j'espère que la prochaine réponse sera un peu plus constructive.

Merci quand meme pour ta réponse.

--==IvanTil==--
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
3 mars 2006 à 08:55
A là c normal ta multiplication ça vient du symbol régional :
en vb on travail en anglais et sous excel en français
or en anglais la virgule est un séparateur de milliers

(et comme j'aime pas qu'on me cherche le vendredi matin c'est la dernière fois que je te parle sur ce sujet)

-- Pourquoi faire simple quand on peut faire compliquer --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
3 mars 2006 à 10:59
Merci pour ton aide constructive lhurgoyf_37. Seulement, même avec ta macro, le même problème se présente à moi. tous les nombres supérieurs à 1 se trouvent multipliés par 1000... Je penses qu'il doit y avoir un petit truc pour résoudre ce problème, seulement, c'est la première foi que je touche au visual basic.... enfin. si vous connaissez d'autres solutions pour ce genre de problèmes, je suis preneur.

P.S: eldim, tu peux faire comme tu dis et ne plus me parler sur ce sujet. parcequ'a part medire des choses que j'avais déjà expliqué dans mon premier post, je ne voi pas ce que tu es venu faire ici..... ah et pis dans ta signature, c'est "compliqué" pas "compliquer".

merci àtous les autres qui deigneront répondre à mon problème. ;)

--==IvanTil==--
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
3 mars 2006 à 11:05
la réponse est pourtant évidente pour résoudre ton problème mais comme tu joues au gamin t'auras rien

c'est pourtant hyper simple...

-- Pourquoi faire simple quand on peut faire compliquer --
0
ivantil Messages postés 25 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 29 janvier 2011
3 mars 2006 à 11:10
ihurgoyf, En fait ta macro marche nickel, il fallait juste que je mettes les cases au format texte avant de lancer ton prog. je les remet en nombre après et pouf ca marche. MERCI!!!!!!!!!!!


Bon pis eldim, toujours égal a toi même. si on a besoin de rien, on t'enverra des messages persos, t'en fais pas, en attendant, arretes de surcharger les sujets de choses inutiles. Merci.

--==IvanTil==--
0
Rejoignez-nous