IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Exporter csv point virgule [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 41
    Points
    41
    Par défaut Exporter csv point virgule
    Je me casse les dents sur cette question depuis une journée et je suis persuadé que la solution est très simple.
    J'ai créé une macro pour exporter une série de données dans un fichier csv séparé par des points virgules.
    Lorsque je crée la macro, le fichier que l'obtiens a bien comme séparateurs des points virgules.
    Mais lorsque je lance la macro, le ficher créé a comme séparateurs des virgules.
    Est-ce que quelqu'un peut me dire comment résoudre ce problème?
    Je sais très bien que je pourrais faire un rechercher/remplacer dans un fichier txt. Mais là, ce fichier sera remis à des personnes qui ne peuvent pas faire cette manip. Il faut vraiment que le fichier sorte avec des points-virgules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Workbooks.Add
        Sheets("Feuil2").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("Feuil3").Select
        ActiveWindow.SelectedSheets.Delete
        ActiveWorkbook.SaveAs Filename:="C:\Users\TOTO\Desktop\toto.csv", FileFormat _
            :=xlCSV, CreateBackup:=False
        Windows("Administration des articles TOTO2.xlsm").Activate
        Sheets("Sources").Select
        Range("A3:D3").Select
        Selection.Copy
        Windows("toto.csv").Activate
        ActiveSheet.Paste
        Windows("Administration des articles TOTO2.xlsm").Activate
        Sheets("Liste principale").Select
        Range("B2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("toto.csv").Activate
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("B2").Select
        Windows("Administration des articles TOTO2.xlsm").Activate
        Range("T2:V2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("toto.csv").Activate
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Application.CutCopyMode = False
    End Sub
    Merci d'avance pour vos réponses.

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour wamkey

    Essaie cette méthode de sauvegarde.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Sauvegarde_ChangeUseSystemSeparators()
    Dim bUseSystemSeparators As Boolean
     
        With Application
            bUseSystemSeparators = .UseSystemSeparators
            .UseSystemSeparators = False
        End With
     
        ActiveWorkbook.SaveAs Filename:="C:\Users\TOTO\Desktop\toto.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True 
     
        With Application
            .UseSystemSeparators = bUseSystemSeparators
        End With
    End Sub
    Cordialement

    Docmarti

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Salut DocMarti,

    J'ai essayé ta proposition. J'ai toujours des virgules. Je reconnais que je ne suis qu'un débutant dans le VBA, et que je n'ai peut être pas utilisé ta proposition correctement. Voici comment j'ai modifié mon script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub exporttarifsite2()
    '
    ' exporttarifsite Macro
    '
     
    '
        Range("A3:D3").Select
        Selection.Copy
        Workbooks.Add
        ActiveSheet.Paste
        Sheets(Array("Feuil2", "Feuil3")).Select
        Sheets("Feuil3").Activate
        Application.CutCopyMode = False
        ActiveWindow.SelectedSheets.Delete
        ActiveWorkbook.SaveAs Filename:= _
            "C:\toto.csv", FileFormat:=xlCSV, _
            CreateBackup:=False
        Windows("Administration des articles WAM.xlsm").Activate
        Sheets("Liste principale").Select
        Range("B2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Windows("tarif site Internet.csv").Activate
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Windows("Administration des articles WAM.xlsm").Activate
        Range("T2:V2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("toto.csv").Activate
        Range("B2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveWorkbook.Save
        Dim bUseSystemSeparators As Boolean
        With Application
            bUseSystemSeparators = .UseSystemSeparators
            .UseSystemSeparators = False
        End With
        ActiveWorkbook.SaveAs Filename:="C:\toto.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
        With Application
            .UseSystemSeparators = bUseSystemSeparators
        End With
        ActiveWindow.Close
        Application.CutCopyMode = False
    End Sub
    Est-ce que cela colle avec ce que tu me recommandais?

    wamkey

  4. #4
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut exporter CSV point virgule
    Bonjour,

    Pour ma gouverne, comment sait-on que les séparateurs sont des points virgules ?

    Par ailleurs, dans l'aide "F1" -sur le mot en gras- il y a ceci. N'est-ce pas une piste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ChangeSystemSeparators()
     
     Range("A1").Formula = "1,234,567.89"
     MsgBox "The system separators will now change."
     
     ' Define separators and apply.Application.DecimalSeparator = "-"
     Application.ThousandsSeparator = "-"
     Application.UseSystemSeparators = False
     
    End Sub
    Cordialement,

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Mon impression est que ce dont tu me parles concerne les séparateurs décimaux. Or là, mon problème concerne les séparateurs de listes. Lorsque tu prends un fichier Excel, si tu fais fichier/enregistrer sous, tu trouveras le format csv (séparateur point-virgule). En théorie, le fichier qui sort doit avoir donc des ; pour montrer le passage d'une cellule à une autre. Le truc, c'est que ma macro qui a pourtant été réalisée en enregistrant mes actions, ne me donne que des virgules.
    Pour être plus précis, mettons que j'ai
    A1= TOTO
    B1 = TATA
    C1= TUTU

    Mon fichier csv doit contenir:
    TOTO;TATA;TUTU

    Pour l'heure, j'obtiens
    TOTO,TATA,TUTU

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonsoir wamkey.

    Est-ce que cela colle avec ce que tu me recommandais?

    Oui, c'est exactement ce que je suggérais. Mais ça n'était pas une bonne idée.

    Mieux vaut y aller avec une valeur sûre et créer le fichier CSV de toutes pièces.

    Si tu as des décimales dans tes données, il faudra faire attention au séparateur décimal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub SauverCsv()
     
      Dim ColNum As Integer
      Dim RowNum As Integer
     
      Dim Valeurs() As Variant
      Dim Ligne As String
     
      Dim FileNumber As Integer
     
      FileNumber = FreeFile
     
      fichier = "C:\toto2.csv"
     
      Open fichier For Output As #FileNumber
     
      ReDim Valeurs(1 To Sheets("toto").UsedRange.Columns.Count)
     
      For RowNum = 1 To Sheets("toto").UsedRange.Rows.Count
        For ColNum = 1 To Sheets("toto").UsedRange.Columns.Count
          Valeurs(ColNum) = Sheets("toto").Cells(RowNum, ColNum).Value
        Next
        Ligne = Join(Valeurs, ",")
        Print #FileNumber, Ligne
      Next
     
      Close FileNumber
     
    End Sub
    Docmarti

  7. #7
    Invité
    Invité(e)

  8. #8
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Mon fichier csv doit contenir:
    TOTO;TATA;TUTU

    Pour l'heure, j'obtiens
    TOTO,TATA,TUTU
    J'avais mal compris la question. J'avais compris que tu voulais des virgules.

    Bon, après de nouveaux tests, je constate que, avec un fichier csv,
    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Filename:="C:\test2\toto.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
    me donne des point-virgules

    alors que

    sauvegarde avec des virgules comme séparateur de liste, c-a-d que ActiveWorkbook.Save ne tient plus compte de mes paramètres régionaux.

    Alors à éviter ActiveWorkbook.Save pour un fichier csv et s'assurer d'avoir Local:=True.

    Cordialement

    Docmarti

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Export csv ou txt avec largeur fixe et séparateur point virgule
    Par shizzle971 dans le forum Excel
    Réponses: 1
    Dernier message: 07/05/2014, 20h56
  2. [AC-2010] Import personnalisé csv point-virgule et guillemet
    Par marsouin_89 dans le forum VBA Access
    Réponses: 3
    Dernier message: 22/03/2014, 17h10
  3. Supprimer certains points virgules en export CSV
    Par elcascador2 dans le forum Excel
    Réponses: 1
    Dernier message: 26/03/2009, 18h08
  4. vba - Conversion xls / csv : point virgule
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/06/2008, 10h36
  5. [CSV] Problème avec CSV et point virgules
    Par Lotz dans le forum Langage
    Réponses: 6
    Dernier message: 09/03/2006, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo