XL 2013 transformer un nombre avec des point en format monétaire via une macro

yohann74

XLDnaute Nouveau
Bonjour à toutes et tous,

suite à un import en .cvs, j'ai une colonne de chiffre avec des points du type 1.054,38 et je souhaitais la convertir en nombre monétaire €. J'ai donc fais cela via "enregistrer une macro, et là nickel cela fonctionne j'arrive au résultat 1 054,38€. Mais quand je fais tourner cette macro là ça ne fonctionne plus cela donne 1 054,38 mais sans € je ne dois pas être en format monétaire, pourtant cela n'est que l'exécution de la macro que j'ai fait avec "enregistrer une macro.
Voici le code que cela donne :
Columns("I:I").Select
Selection.Replace What:=".", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("I:I").Select
Selection.Style = "Currency"
Merci d'avance pour votre aide.
Yohann74
 

R@chid

XLDnaute Barbatruc
Re : transformer un nombre avec des point en format monétaire via une macro

Bonjour,
on peut le faire avec Données/Convertir :
yohann74.jpg

Et puis tu peux appliquer un format monétaire sur les valeurs.


@ + +
 

Victor21

XLDnaute Barbatruc
Re : transformer un nombre avec des point en format monétaire via une macro

Bonjour yohann74.

Vous remplacez du texte par du texte. Un format n'y fera rien : multipliez(ou divisez) les résultats obtenus par 1, ou ajoutez(ou soustrayez)-leur 0.

Edit : Bonjour, R@chid :)
 

yohann74

XLDnaute Nouveau
Re : transformer un nombre avec des point en format monétaire via une macro

Merci de vos retour, mais cela marche quand je le fais manuelement , mais intégré à une macro cela ne fonctionne pas.
La solution de R@chid marche presque intégré à une macro sauf pour les petits nombre <1000 ?

cela donne cela en code VBA
Columns("I:I").Select
Selection.TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), ThousandsSeparator:=".", TrailingMinusNumbers:=True
Selection.Style = "Currency"
Application.WindowState = xlMinimized
Application.WindowState = xlNormal
End Sub
Merci
 

Docmarti

XLDnaute Occasionnel
Re : transformer un nombre avec des point en format monétaire via une macro

Bonjour à tous.

Essaie :

Code:
 Columns("I:I").Select
    
   Selection.Style = "Currency"

'Supprimer le séparateur de milliers
    Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
  
'   
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
 

yohann74

XLDnaute Nouveau
Re : transformer un nombre avec des point en format monétaire via une macro

Merci Docmarti, c'est exactement ce que je souhaitais.
Mais estce que tu sais pourquoi quand on fait la manip remplacer . par vide et après touche € pour enregistrer "enregistrer une macro" cela fonctionne mais quand on lance cette même macro cela ne fonctionne plus ? c'est juste par curiosité, il ne doit pas traduire en VBA exactement les actions faites ?
En tout cas merci.
 

Docmarti

XLDnaute Occasionnel
Re : transformer un nombre avec des point en format monétaire via une macro

Mais est ce que tu sais pourquoi quand on fait la manip remplacer . par vide et après touche € pour enregistrer "enregistrer une macro" cela fonctionne mais quand on lance cette même macro cela ne fonctionne plus ?
En tout cas merci.

Si tu obtiens cela en manuel, c'est que les données sont déjà du type Double, parce que le fait de changer le format de la cellule ne modifie pas le type des données.

Il faudrait que tu envoies un classeur avec un mini exemple qui produit ce résultat en manuel et pas en VBA pour qu'on puisses en trouver la raison.


Docmarti
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390