saveas csv et ; pour séparateur ?

saveas csv et ; pour séparateur ? - VB/VBA/VBS - Programmation

Marsh Posté le 07-03-2011 à 13:26:12    

Bonjour,
 
Je cherche à enregistrer mon fichier en format csv séparé par des point virgule (semicolon) ;
or il me sauvegarde avec la virgule , en tant que séparateur ... :(
.SaveAs Filename:=chemindestination & "toto.csv", FileFormat:=xlCSV, Local:=True
 
J'ai vu sur le net qu'en utilisant Local:=True il devrait utiliser mes paramètres régionaux (je suis en francais et le ; est bien défini comme séparateur de liste).
Or il persiste à me sauvegarder ca avec la virgule en séparateur... :(
 
help !

Reply

Marsh Posté le 07-03-2011 à 13:26:12   

Reply

Marsh Posté le 07-03-2011 à 20:33:42    

Salut,l'ultime solution ( peut-être ...)
Extrait de l'aide sur SaveAs
Local  Argument de type Variant facultatif. La valeur True enregistre les fichiers en fonction de la langue de Microsoft Excel (y compris les paramètres du Panneau de configuration). La valeur False (valeur par défaut) enregistre les fichiers en fonction de la langue de Visual Basic pour Applications (VBA) (qui est généralement l'anglais des États-Unis, sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet VBA XL5/95 de niveau international).
 


Option Explicit
 
Sub Tst2()
Dim Tableau, ligne As String, i As Long, j As Long, NumFichier As Integer
Const sSep As String = ";"
     
    NumFichier = FreeFile
    Tableau = ThisWorkbook.Worksheets(1).UsedRange
    Open ThisWorkbook.Path & "\" & "essai.csv" For Output As #NumFichier
    For i = LBound(Tableau, 1) To UBound(Tableau, 1)
        ligne = Tableau(i, LBound(Tableau, 2))
        For j = LBound(Tableau, 2) + 1 To UBound(Tableau, 2)
            ligne = ligne & sSep & Tableau(i, j)
        Next j
        Print #NumFichier, ligne
    Next i
    Close NumFichier
End Sub

Message cité 1 fois
Message édité par kiki29 le 09-03-2011 à 05:50:25
Reply

Marsh Posté le 08-03-2011 à 08:34:49    

kiki29 a écrit :

Salut,l'ultime solution ( peut-être ...)
Extrait de l'aide sur SaveAs
Local  Argument de type Variant facultatif. La valeur True enregistre les fichiers en fonction de la langue de Microsoft Excel (y compris les paramètres du Panneau de configuration). La valeur False (valeur par défaut) enregistre les fichiers en fonction de la langue de Visual Basic pour Applications (VBA) (qui est généralement l'anglais des États-Unis, sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet VBA XL5/95 de niveau international).
 



Option Explicit
 
Sub Tst2()
Dim Tableau, ligne As String, i As Long, j As Long, NumFichier As Integer
Const sSep As String = ";"
     
    NumFichier = FreeFile
    Tableau = ThisWorkbook.Worksheets(1).UsedRange
    Open ThisWorkbook.Path & "" & "essai.csv" For Output As #NumFichier
    For i = LBound(Tableau, 1) To UBound(Tableau, 1)
        ligne = Tableau(i, LBound(Tableau, 2))
        For j = LBound(Tableau, 2) + 1 To UBound(Tableau, 2)
            ligne = ligne & sSep & Tableau(i, j)
        Next j
        Print #NumFichier, ligne
    Next i
    Close NumFichier
End Sub

Effectivement le faire à la mano reste la denière solution ! :jap:

Reply

Marsh Posté le 10-03-2011 à 14:45:06    

Ca y est je l'ai implémenté, ca marche bien sauf pour les champs date :(
en effet dans l'excel j'ai des champs de type HH:mm:ss
quand ils sont écrit dans le fichier j'ai 0,228819444444444 au lieu de 05:29:30, comment lui dire de respecter le format de ces champs ??

Reply

Marsh Posté le 10-03-2011 à 16:02:32    

Pour ma part un  
Local:=True  
Fonctionne sans souci pour avoir le ;
 
Il ne faut juste pas faire derriere l'enregistrement du fichier en CSV un :
ActiveWorkbook.Close savechanges:=True
Parce que la, forcement, il remet une "," à la place...
 
 
Jette un oeil ici aussi : http://www.excelabo.net/trucs/csv
Plutot que de passer par des fichier texte ou justement les formats deviennent vites tres chiants...


Message édité par SuppotDeSaTante le 10-03-2011 à 16:03:29

---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed