Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…