[déplacé VB6 -> VBA] Changer le point par rien

cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013 - 16 mars 2010 à 10:47
daffy17 Messages postés 106 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 22 avril 2010 - 22 mars 2010 à 09:12
Bonjour à tous, j'explique mon problème, je realise des exatractions de document, et le souci c'est que les chiffres se présentent sous forme :
1.028,16
1.119,03
1.521,44
456,5

je realise la macro :
Selection.Replace What:= ".", Replacement:="", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False

le souci c'est que excel confond , et .
le résultat est :
1.028,16 => 1 028,16
1.119,03
1.521,44
456,5 => 4565

Autrement dit, s'il n'y a pas de point il considere la "," comme point et la supprime égallement :x

je voulais alors dans ce cas mettre un "." dans chaque cellule (et apres le pb est reglé) mais le souci c'est qu'avec 8000cellules la manipulation devient trop lente :x, j'avais utilisé cette macro :
'Dim CL As Range
'For Each CL In Selection
'If CL <> "" Then
'If Right(CL, 7) <> "." Then < = le point se trouvant en 7eme position à droite cependant la syntaxe est incorrect, je ne sais pas correctement utilisé cette fonction :x
'CL = "." & CL.Text
'End If
'End If
'Next

8 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
16 mars 2010 à 10:53
salut,

et sinon tu ne classes toujours pas dans le bon thème?!!

[hr]
0
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013
16 mars 2010 à 11:05
Aie désolé, j'était persuadé que c'était le bon theme, je veux bien le changer, mais je ne vois pas la fonction éditer?
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
16 mars 2010 à 11:49
il n'y en a pas


fait attention la prochaine fois :
VB6 > DERIVES > VBA

++
[hr]
0
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013
16 mars 2010 à 11:56
ok je vais replacer le topic, merci ^^
0

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

Posez votre question
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013
16 mars 2010 à 14:23
Sinon j'ai pensé à insérer un "." dans chaque cellule, ainsi il ne supprime que les "."
L'inconvéniant c'est que l'execution de l'opération est très longue :(

Dim CL As Range
For Each CL In Selection
If CL <> "" Then
CL = "." & CL.Text
End If
Next


y'a t'il un moyen de n'executer l'opération que sur les cellules qui ne dispose pas d'un "." dans leur chaine ?


merci
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
16 mars 2010 à 16:18
le POINT a-t-il été saisi? ou ce n'est qu'un format d'affichage....

affiche (msgbox) une trace, pour voir la différence entre .TEXT et .VALUE

(çà sent le déjà dit non?...)
0
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013
17 mars 2010 à 10:04
Le point a été saisie, et le format d'affichage est en valeur.

Le souci c'est qu'avec le remplacé (ctrl + h) ca passe sans souci, mais des lors que je l'enregistre en macro, là plus rien ne vas.

Je pense garder ma méthode en insérant un "." dans chaque cellule, j'ai realisé le test et le resultat est concluant, cependant l'opération prends une 30aines de minutes.
0
daffy17 Messages postés 106 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 22 avril 2010
22 mars 2010 à 09:12
As tu essayé de modifier le paramètres d'excel en ce qui concernent le format régional (pour les séparateurs de décimal et de milliers) ?
Application.DecimalSeparator = ","

ou
Application.DecimalSeparator = "."

et
Application.ThousandsSeparator = ""


Fait plusieurs tests avec des valeurs différentes ça pourrait marcher.
Je pencherait par défaut pour essayer le "thousandsSeparator".
Effectue la modification en début de traitement de ta fonction ou d'ouverture de ton classeur, et pense surtout à remettre la valeur par défaut à la fin du traitement ou à la fermeture de ton classeur histoire de ne pas modifier les préférences des utilisateurs.

Dim separateurMillier As String
separateurMillier = Application.ThousandsSeparator

'Début de traitement
Application.ThousandsSeparator = ""
'Traitement
'Traitement
'Traitement
'Fin de traitement
Application.ThousandsSeparator = separateurMillier
0