Transformer une série de chiffres en nombre

  • Initiateur de la discussion Initiateur de la discussion Rep
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 !
 
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
 
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:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
685
Retour