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 !
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 !