Eternel problème..... Conversion de valeurs depuis un fichier csv dans Excel
Windows et EXcel en Français (pas de séparateur de millers, décimal = ,)
J'ai des valeurs qui proviennent d'un fichier csv par extraction :
1,085.50
57.50
170.80
1,313.80
Forcément, Excel ne reconnaÍ®t pas de numériques lÍ -dedans. Donc, je fais (syntaxe via l'enregistreur, donc bonne Í priori) :
'------------------------------------------------------------------------------------------
With Union(ActiveWorkbook.Sheets(2).Range("B7"), ActiveWorkbook.Sheets(2).Range("B11"))
.Replace What:=",", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.NumberFormat = "#,##0.00"
.HorizontalAlignment = xlRight
End With
'------------------------------------------------------------------------------------------
A l'affichage, j'ai maintenant :
1085,5
57,50
170,80
1313,8
Pourquoi la première et la dernière cellule ne sont pas au bon format ? Et si je sélectionne une de ces cellules et que je fais Entrée dans la barre de saisie le bon format apparaÍ®t (1 085,50) ????????
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour, Je t'ai fait un petit exemple de code pour ton problème. J'ai copié les données de ton message dans la feuille "Feuil1" et dans la plage A1:A4 '--------------------------------------- Sub test() With Worksheets("Feuil1") With .Range("A1:A4") 'Supprime le caractère "Espace insécable" s'il existe .Replace What:=Chr(160), Replacement:="", LookAt:=xlPart 'Supprime le caractère "Espace barre espacement" s'il existe .Replace What:=Chr(32), Replacement:="", LookAt:=xlPart 'Remplace d'abord le Point par "_" .Replace What:=".", Replacement:="_", LookAt:=xlPart 'Remplace la virgule par "" .Replace What:=",", Replacement:="", LookAt:=xlPart 'Remplace la "-" par "," .Replace What:="_", Replacement:=",", LookAt:=xlPart 'Remplace la "," par "." 'C'est ici que l'affichage 's'aligne Í droite. 'Le séparateur décimal est le point en VBA et 'la virgule dans la feuille de calcul. Ça demande un 'moment de réflexion ;-)) .Replace What:=",", Replacement:=".", LookAt:=xlPart .NumberFormat = "#,##0.00" End With End With End Sub '--------------------------------------- Dans ta procédure, cette ligne de code : .HorizontalAlignment = xlRight permet d'afficher le contenu des cellules Í droite, mais le format des cellules est toujours texte. Dans Excel, dès que le format est numérique, Excel affiche le contenu Í droite Í moins que la cellule ait reçu un format particulier. Ce dont il faut se rappeler, pour que le contenu passe d'un format Í l'autre (texte Í numérique) la cellule doit passer en mode "Édition" et au moment de valider, le nouveau format prend place et automatiquement le contenu numérique s'affiche Í droite. MichD
Bonjour,
Je t'ai fait un petit exemple de code pour ton problème.
J'ai copié les données de ton message dans la feuille "Feuil1" et dans
la plage A1:A4
'---------------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A4")
'Supprime le caractère "Espace insécable" s'il existe
.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
'Supprime le caractère "Espace barre espacement" s'il existe
.Replace What:=Chr(32), Replacement:="", LookAt:=xlPart
'Remplace d'abord le Point par "_"
.Replace What:=".", Replacement:="_", LookAt:=xlPart
'Remplace la virgule par ""
.Replace What:=",", Replacement:="", LookAt:=xlPart
'Remplace la "-" par ","
.Replace What:="_", Replacement:=",", LookAt:=xlPart
'Remplace la "," par "." 'C'est ici que l'affichage
's'aligne Í droite.
'Le séparateur décimal est le point en VBA et
'la virgule dans la feuille de calcul. Ça demande un
'moment de réflexion ;-))
.Replace What:=",", Replacement:=".", LookAt:=xlPart
.NumberFormat = "#,##0.00"
End With
End With
End Sub
'---------------------------------------
Dans ta procédure, cette ligne de code :
.HorizontalAlignment = xlRight
permet d'afficher le contenu des cellules Í droite, mais le format des
cellules est toujours texte. Dans Excel, dès que le format est
numérique, Excel affiche le contenu Í droite Í moins que la cellule ait
reçu un format particulier.
Ce dont il faut se rappeler, pour que le contenu passe d'un format Í
l'autre (texte Í numérique) la cellule doit passer en mode "Édition" et
au moment de valider, le nouveau format prend place et automatiquement
le contenu numérique s'affiche Í droite.
Bonjour, Je t'ai fait un petit exemple de code pour ton problème. J'ai copié les données de ton message dans la feuille "Feuil1" et dans la plage A1:A4 '--------------------------------------- Sub test() With Worksheets("Feuil1") With .Range("A1:A4") 'Supprime le caractère "Espace insécable" s'il existe .Replace What:=Chr(160), Replacement:="", LookAt:=xlPart 'Supprime le caractère "Espace barre espacement" s'il existe .Replace What:=Chr(32), Replacement:="", LookAt:=xlPart 'Remplace d'abord le Point par "_" .Replace What:=".", Replacement:="_", LookAt:=xlPart 'Remplace la virgule par "" .Replace What:=",", Replacement:="", LookAt:=xlPart 'Remplace la "-" par "," .Replace What:="_", Replacement:=",", LookAt:=xlPart 'Remplace la "," par "." 'C'est ici que l'affichage 's'aligne Í droite. 'Le séparateur décimal est le point en VBA et 'la virgule dans la feuille de calcul. Ça demande un 'moment de réflexion ;-)) .Replace What:=",", Replacement:=".", LookAt:=xlPart .NumberFormat = "#,##0.00" End With End With End Sub '--------------------------------------- Dans ta procédure, cette ligne de code : .HorizontalAlignment = xlRight permet d'afficher le contenu des cellules Í droite, mais le format des cellules est toujours texte. Dans Excel, dès que le format est numérique, Excel affiche le contenu Í droite Í moins que la cellule ait reçu un format particulier. Ce dont il faut se rappeler, pour que le contenu passe d'un format Í l'autre (texte Í numérique) la cellule doit passer en mode "Édition" et au moment de valider, le nouveau format prend place et automatiquement le contenu numérique s'affiche Í droite. MichD
ThierryP
Bonjour Denis, Comme d'habitude, rien Í redire !!!!! Et évidemment, je n'avais pas pensé au remplacement intermédiaire ! Comme quoi la programmation c'est un vrai métier :-):-):-) Un grand merci ! ThierryP
Bonjour Denis,
Comme d'habitude, rien Í redire !!!!!
Et évidemment, je n'avais pas pensé au remplacement intermédiaire !
Comme quoi la programmation c'est un vrai métier :-):-):-)
Bonjour Denis, Comme d'habitude, rien Í redire !!!!! Et évidemment, je n'avais pas pensé au remplacement intermédiaire ! Comme quoi la programmation c'est un vrai métier :-):-):-) Un grand merci ! ThierryP