bounette
Messages postés37Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention 4 mars 2015
-
22 déc. 2005 à 11:16
bounette
Messages postés37Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention 4 mars 2015
-
25 déc. 2005 à 21:48
Bonjours,
Je me permet de solliciter vos compétences en VBA.
Je travail sous office 2000
Si enregistre une feuille Excel en csv (;)en utilisant la méthode normal ( Fichier , enregistrer sous .) j'obtiens bien un fichier du style 12;56;45 .
Avec l'enregistreur de macro j'ai sauvé cette méthode sous le non de macro 1
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 10/12/2005 par user
'
'
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\user\Mes documents\Essai\Classeur2.csv", FileFormat _
:=xlCSV, CreateBackup:=False
End Sub
A présent si j'utilise cette macro 1 je n'ai pas de ; (point virgule) mais de , ( virgule) 12,56,45.
Connaissez-vous la raison et existe t-il une solution à ce problème
Merci d'avance pour vos réponses
Je vous prie de m'excuser pour mon orthographe
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 22 déc. 2005 à 17:08
Salut, chez moi ça me met des point-virgules mais j'ai déjà vu le même prob que toi. Ca vient peut-être des paramètres régionaux. En tous cas, voilà une URL qui apporte une solution, à tester :
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 23 déc. 2005 à 14:01
Bizare, en temps normal le format CSV utilise la virgule, comme son nom l'indique (comma separated values), autrement dit en français valeurs séparées par une virgule.
Je dirais donc que l'enregistreur de macro a l'air de bien faire son boulo alors que excel Semble s'emmeller les piceaux.
Je pense que la source du problème viens du séparateur décimal.
En français, on utilise la virgule (,) alors que les anglais utilisent le Point(.). Or vba est tout en english donc lors de l'enregistrement depuis VBA, toutes les virgules sont converties en points puis le séparateur de valeur utilisé est bien la virgule. On a bien un format anglais et un fichier en CSV.
Mais Excel qui lui est en version française ne converti pas le séparateur décimal et se contente d'utiliser le point virgule comme séparateur de valeur. le fichier ainsi crée n'est pas du CSV et alors se pose le problème de compatibilité des CSV crée depuis Excel avec d'autres applications.
En résumé, on pourrait dire que du fait du format décimal utilisé en france, le format de fichier CSV est incompatible .
J'irais même plus loin.
Si on enregistre un fichier contenant des entiers depuis VBA avec un format CSV,
le séparateur utilisé est bien la virgule (jusqu'ici, normal) mais si on ouvre ce fichier avec excel, bonjour les dégats, Les entiers se sont transformés en décimaux à plusieurs virgules !!!!
La règle à utiliser est donc la suivante :
Les fichier CSV créés depuis VBA ne peuvent être ouverts que depuis VBA.
Et on notera également qui si on fait une extraction de données depuis Excel pour les importer dans un autre soft, L'extraction en CSV devra se faire en VBA.