VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

miguelangelo

XLDnaute Occasionnel
Bonjour à tous, forum,

j'ai développé une manip qui permet d'intégré des informations en format csv avec des ";"

via ces qq lignes :

ActiveWorkbook.SaveAs Filename:=repertoire & "\lignes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time) & ".csv", FileFormat:=xlCSV, _ CreateBackup:=False

en passant en excel 2003 (waw patron z'etes trop bon !!), et bien tout normalement les fichers csv sortent avec une virgule.

Pouvez vous m'aider pour que ces ####..##### de fichiers sortent tjs avec une ";" ?

Merci pour votre aide
 
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Bonjour,

essaye peut être comme suit :
Code:
ActiveWorkbook.SaveAs Filename:=repertoire & "\lignes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time), xlCSVWindows, , , , , , , , , , True
bonne journée
@+
 
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Merci pour vos réponses,
non je pense pas que la date y soit pour qq chose ?
Pierrot, à n'utiliser que sur 2003 ...??? faut il conditionner à la version ?

vba n'en veut pas.. il lui manque un qqchose !!!
 
Dernière édition:
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Re,

modifie comme suit :
Code:
ActiveWorkbook.SaveAs Repertoire & "\lignes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time), xlCSVWindows, , , , , , , , , , True
 
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Donc sur la base de la piste de Pierrot93, avec une petite recherche googooole : la réponse qui me va bien est:

ActiveWorkbook.SaveAs Filename:=repertoire & "\lignes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time) & ".csv", FileFormat:=xlCSVWindows, local:=True

et surtout : le "local:=True" sans qui les séparations sont toujours des virgules..

je te remercie encore Pierrot93 pour toutes tes lumieres !!
 
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Bonjour à tous,

j'ai encore un petit probleme avec l'enregistrement csv 2000 et 2003. Pour rappel, l'objet de ma macro est juste un enregistrement au format csv avec séparateur ";"
Un exemple ci dessous :
- en 2000 j'obtiens ca :
CRE/M;EUR;ACHATS;;EFT;100LOYERS;;;30/08/2011;10.100.401160.-.-.-.61610.-.-.-;;;

ce qui me va très bien vu que j'ai un traitement Oracle qui va pomper les infos (séparateur obligatoirement ";")

- en 2003 j'ai ça :
CRE/M;EUR;ACHATS;;EFT;100LOYERS;;;30/08/2011;"10.100.401160.-.-.-.61610.-.-.-;;;"

Ce qui me dérange ce sont les guillemets en fin de syntaxe.
Pouvez vous m'aider car là !!!!.... 😕
 
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

la macro en question :

Sub transfert_entete_lignes2()
Dim j As String
Dim repertoire As String
repertoire = Range("integrations").Value
Application.ScreenUpdating = False
Sheets("entetes").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Range("c:c").NumberFormat = "dd/mm/yyyy"
Range("f:f").NumberFormat = "0.00"
Range("ai:ai").NumberFormat = "dd/mm/yyyy"
Range("1:1").Delete
ActiveWorkbook.SaveAs Filename:=repertoire & "\entetes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time) & ".csv", FileFormat:=xlCSVWindows, local:=True

ActiveWindow.Close SaveChanges:=False


Sheets("lignes").Select
Range("a1").Select
Selection.CurrentRegion.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Range("e:e").NumberFormat = "0.00"
Range("f:f").NumberFormat = "dd/mm/yyyy"
Application.CutCopyMode = False
Range("1:1").Delete
ActiveWorkbook.SaveAs Filename:=repertoire & "\lignes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time) & ".csv", FileFormat:=xlCSVWindows, local:=True

ActiveWindow.Close SaveChanges:=False

Sheets("Synthese").Select
Application.ScreenUpdating = True
End Sub
 
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Bonjour miguelangelo, Bonjour Pierrot 🙂,
Une proposition radicalement différente:
VB:
Sub creer_CSV()
With Sheets("entetes")
    .Range("c:c").NumberFormat = "dd/mm/yyyy"
    .Range("f:f").NumberFormat = "0.00"
    .Range("ai:ai").NumberFormat = "dd/mm/yyyy"
    Open Range("integrations").Value & "\entetes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time) & ".csv" For Output As #1
    For i = 2 To .Range("A1").CurrentRegion.Rows.Count
        For j = 1 To .Range("A1").CurrentRegion.Columns.Count
            Mes = Mes & .Cells(i, j).Text & ";"
        Next j
        Print #1, Mes
        Mes = ""
    Next i
    Close #1
End With
With Sheets("lignes")
    .Range("e:e").NumberFormat = "0.00"
    .Range("f:f").NumberFormat = "dd/mm/yyyy"
    Open Range("integrations").Value & "\lignes" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "-" & Hour(Time) & "h" & Minute(Time) & ".csv" For Output As #1
    For i = 2 To .Range("A1").CurrentRegion.Rows.Count
        For j = 1 To .Range("A1").CurrentRegion.Columns.Count
            Mes = Mes & .Cells(i, j).Text & ";"
        Next j
        Print #1, Mes
        Mes = ""
    Next i
    Close #1
End With
End Sub
Cordialement
 
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Salut,
Code:
Local := True
?

Extrait de l'aide en ligne
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).
 
Dernière édition:
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

Re
Content que ça te plaise 🙂.
Comme j'ai fait une autre version, plus rapide ( pour 2 feuilles de 12 000 lignes sur 5 colonnes chacune, on passe de 5 secondes à 0.45 ), je la poste.
Tout dépends de la configuration des données de bases car la macro ne prend que les valeurs des cellules et non leurs formats.
A tester....
VB:
Sub creer_CSV_2()
Dim i&, j&
Dim Mes$, Fic$
Dim Plg As Variant
Fic = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & _
        "-" & Hour(Time) & "h" & Minute(Time) & ".csv"
Open Range("integrations").Value & "\entetes" & Fic For Output As #1
    Plg = Sheets("entetes").Range("A1").CurrentRegion.Value
    For i = LBound(Plg, 1) + 1 To UBound(Plg, 1)
        For j = LBound(Plg, 2) To UBound(Plg, 2)
            Mes = Mes & Plg(i, j) & ";"
        Next j
        Print #1, Mes
        Mes = ""
    Next i
Close #1
Erase Plg
Open Range("integrations").Value & "\lignes" & Fic For Output As #1
    Plg = Sheets("lignes").Range("A1").CurrentRegion.Value
    For i = LBound(Plg, 1) + 1 To UBound(Plg, 1)
        For j = LBound(Plg, 2) To UBound(Plg, 2)
            Mes = Mes & Plg(i, j) & ";"
        Next j
        Print #1, Mes
        Mes = ""
    Next i
Close #1
End Sub
Cordialement
 
Dernière édition:
Re : VBA : enregistrement CSV sous 2003 avec "," au lieu de ";"

rhhhhoooooo....(un râle)..... trop bon !!
j'avais un problème de décimale (normalement un .) que xls 2003 me mettait en virgule dans le csv...(
y a plus !!!!

faudrait rajouter le smiley ..prieur ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour