Transformer une série de chiffres en nombre

Rep

XLDnaute Junior
Bonjour à tous,

Je traite régulièrement des fichiers d'export de logiciel pour l'intégrer dans un autre logiciel. Les formats d'export sont assez divers, mais mon problème ne concerne que les nombres; en effet, selon le logiciel d'origine, ils ne sont pas enregistrés de la même manière.

Je souhaite par exemple transformer via une macro :
- 4.769,09 en 4769,09
- 4769.09 en 4769,09

Le but étant de pouvoir travailler sur des formats reconnus par Excel. Je cherche à réaliser une macro tout-en-un, à savoir que quelque soit l'encodage d'origine du nombre, celui-ci sera transformé selon le standard Excel.

Voici la macro que j'ai montée :

-------------------------------------------
Sub Nb_conversion()
For Each cell In Selection
If InStr(1, cell.Text, ".") > 0 Then
If InStr(1, cell.Text, ",") > 0 Then
Selection.Replace What:=".", Replacement:=""
End If
Selection.Replace What:=".", Replacement:=","
End If
Next
End Sub
-------------------------------------------

Elle permet en théorie de procéder à la transformation sur les cellules sélectionnées. Mais mon problème est le suivant: si je sélectionne une seule cellule, tout fonctionne correctement. En revanche, si j'en sélectionne plusieurs, tout est transformé comme si les cellules contenaient à la fois "," et "." En fait, le problème vient de la fonction "Instr" qui, dans ma macro, prend comme chaîne toutes les cellules dans le test de condition et non pas les cellules une par une.

Comment procéder donc pour que le test soit réalisé à partir de la chaîne de chaque cellule et pas de la sélection?

Merci d'avance !
 

ROGER2327

XLDnaute Barbatruc
Re : Transformer une série de chiffres en nombre

Bonjour Rep
Essayez ceci :
VB:
Sub Nb_conversion()
Dim cell As Range
For Each cell In Selection
If InStr(1, cell.Text, ".") > 0 Then
If InStr(1, cell.Text, ",") > 0 Then
cell.Replace What:=".", Replacement:=""
End If
cell.Replace What:=".", Replacement:=","
End If
Next
End Sub
ROGER2327
#5081


Jeudi 19 Pédale 138 (Sainte Goutte, fête militaire, SQ)
23 Ventôse An CCXIX
2011-W10-7T13:28:18Z
 

Hippolite

XLDnaute Accro
Re : Transformer une série de chiffres en nombre

Bonjour,
Y a-t-il un ensemble de formats limité ou bien tout est-il possible ?
Dans ce dernier cas, il n'y a pas de solution car comment traiter 1.001 qui peut être 1,001 ou 1001 ?
S'il n'y a pas plus de deux décimales, c'est faisable :
- recherche de la position de la décimale dans les trois derniers caractères
- suppression des virgules et points
- mise en place de la décimale
A+

Edit : Bonjour Roger
Je n'avais pas rafraîchi.
 
Dernière édition:

Rep

XLDnaute Junior
Re : Transformer une série de chiffres en nombre

Merci beaucoup pour vos réponses,

@ROGER2327 : merci beaucoup, c'est tellement simple que je n'y avais pas pensé !

@Hippolite : heureusement, les données n'ont pas plus de deux décimales. Mais vous soulevez un point intéressant; je vais vérifier si des exports correspondent au cas cité.

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 250
Membres
102 836
dernier inscrit
Ali Belaachet