ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 janvier 2011
-
2 mars 2006 à 13:56
ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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==--
lhurgoyf_37
Messages postés12Date d'inscriptionjeudi 9 décembre 2004StatutMembreDerniè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.
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 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 --
ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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.
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 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 --
Vous n’avez pas trouvé la réponse que vous recherchez ?
ivantil
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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
Messages postés25Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention29 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.