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 :

Enregistrement fichier csv [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut Enregistrement fichier csv
    Bonjour,
    je viens de basculer de Excel 2010 à office 365 et je me retrouve bloquée sur une macro qui n'arrive plus à enregistrer un fichier excel en format CSV (cela fonctionnait très bien avant la bascule).
    J'ai cherché sur le forum apparemment cela pourrait être un problème de séparateurs , avec office et ; avec excel 2010 mais je n'arrive pas à trouver de solution. Pouvez vous m'aider ?

    Merci d'avance.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    'Générer le fichier csv qui sera intégré dans Sage - MACRO DEFINITIVE
     
    Sub Generer_fichier_csv()
    '
    ' Generer_fichier_csv Macro
    '
     
        Dim chemin As Variant
        Dim nom_fichier_csv As Variant
        Dim nom_fichier_travail As Variant
     
    'Definition des variables
        Sheets("Parametres").Select
        Range("chemin").Select
        chemin = ActiveCell.Value
        Range("nom_fichier_csv").Select
        nom_fichier_csv = ActiveCell.Value
        Range("nom_fichier_travail").Select
        nom_fichier_travail = ActiveCell.Value
     
     
     
    'Créer un nouveau fichier à enregistrer au format csv
     
        Workbooks.Add
        ChDir _
            chemin
        ActiveWorkbook.SaveAs Filename:= _
            chemin & nom_fichier_csv _
            , FileFormat:=xlCSV, CreateBackup:=False, local:=True
        Application.DisplayAlerts = False
        Application.DisplayAlerts = True
     
        Windows(nom_fichier_travail).Activate
        Sheets("Import").Select
        Range("B1:AA1").Select
        Selection.Copy
        Windows(nom_fichier_csv).Activate
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Windows(nom_fichier_travail).Activate
        Sheets("Import").Select
        Range("C3").Select
        Selection.End(xlDown).Select
        num_ligne_plage = ActiveCell.Row
        Range("C3:AA" & num_ligne_plage).Select
        Selection.Copy
        Windows(nom_fichier_csv).Activate
        Range("B3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Range("A1").Select
     
       ActiveWorkbook.SaveAs local:=True
       Application.DisplayAlerts = False
        ActiveWorkbook.Close
        Application.DisplayAlerts = True
     
        Windows(nom_fichier_travail).Activate
        Sheets("Parametres").Select
        ActiveWorkbook.Save

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Annefi Voir le message
    une macro qui n'arrive plus à enregistrer un fichier excel en format CSV (cela fonctionnait très bien avant la bascule).
    Quel est le symptôme ?
    Si l'exécution plante, quelle est le message d'erreur et quelle est la ligne de code désignée ?
    Si le résultat n'est pas satisfaisant, quelle est la différence entre le résultat souhaité et le résultat obtenu ?

  3. #3
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut Explication message erreur
    Citation Envoyé par Menhir Voir le message
    Quel est le symptôme ?
    Si l'exécution plante, quelle est le message d'erreur et quelle est la ligne de code désignée ?
    Si le résultat n'est pas satisfaisant, quelle est la différence entre le résultat souhaité et le résultat obtenu ?
    Bonjour,

    désolée en effet je n'ai pas précisé, le fichier est bien créé mais les données ne sont pas présentes dans le fichier généré.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Annefi Voir le message
    désolée en effet je n'ai pas précisé, le fichier est bien créé mais les données ne sont pas présentes dans le fichier généré.
    Ca veut dire que le fichier est totalement vide ?
    As-tu vérifié son contenu en l'ouvrant avec le NotePad Windows ?

  5. #5
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Ca veut dire que le fichier est totalement vide ?
    As-tu vérifié son contenu en l'ouvrant avec le NotePad Windows ?
    le fichier est totalement vide et je n'ai rien quand j'ouvre dans wordpad

  6. #6
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Ca veut dire que le fichier est totalement vide ?
    As-tu vérifié son contenu en l'ouvrant avec le NotePad Windows ?
    et j'ai vérifieé en faisant pas à pas la macro prend bien les données et les copie colle dans le fichier csv le problème survient vraiment lors de l'enregistrement.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il est malaisé d'essayer de comprendre pourquoi "ça marchait" et pourquoi "ça ne marche plus"... Mais le code que tu nous proposes n'aide pas à y voir clair (rien de personnel là-dedans, juste un simple constat technique).

    En effet, tu travailles avec ActiveWorkbook mais ce dernier change tout le temps. Pas simple, donc, de bien s'assurer que tu enregistres le bon, que tu transfères sur le bon, etc etc... Ton code semble être tiré de l'enregistreur de macros qui ne produit que rarement, voire jamais, un code de qualité. Ainsi, tu passes par des sélections et des activations ainsi que par des pastespecial là où ce n'est pas nécessaire. Tu aurais intérêt à supprimer les Select/Activate, à travailler avec des objets qui pointent explicitement vers tes classeurs, etc.

    1. Tu souhaites récupérer les valeurs de certaines plages nommées. Dans la mesure où je suppose que les noms de ces plages sont uniques dans le classeur, tu peux le faire en trois lignes plutôt que de passer par les Select.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Chemin = Range("Chemin").Value
      NomCSV = Range("Nom_Csv").Value
      NomSource = Range("Fichier_Travail").Value
    Pour récupérer tes classeurs (la source est ouverte, au vu de ton code), tu peux procéder ainsi. Le Activate final permet de revenir sur le "pilote", car la création d'un classeur l'active automatiquement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Set wbSource = Workbooks(NomSource)
      Set wbTarget = Workbooks.Add()
      ThisWorkbook.Activate
    2. Après, pour simplifier le CopyPasteSpecial, tu peux utiliser la propriété Value d'une plage qui peut recevoir le .Value d'une autre plage de même dimension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      shTarget.Range("a1:z1").Value = shSource.Range("b1:aa1").Value
    3. Pour transférer les données issues de la plage variable, tu peux utiliser des variables de type Range et utiliser ces objets pour le transfert. Ici, j'utilise Resize pour que la plage rTarget soit de même dimension que la plage rSource.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Set rSource = shSource.Range("c3:aa" & shSource.Range("c3").End(xlDown).Row)
      Set rTarget = shTarget.Range("b3:z3").Resize(rSource.Rows.Count)
      rTarget.Value = rSource.Value

    4. Après, tu enregistre le classeur CSV et tu le fermes, puis tu fermes la source.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      wbTarget.SaveAs Filename:=Chemin & NomCSV, FileFormat:=XlFileFormat.xlCSVUTF8, local:=True
      wbTarget.Close
      wbSource.Close False
    Voici les bouts de code intégrés dans une procédure unique, la gestion d'erreur étant de mise. Ce code crée bien le CSV, ici en UTF-8
    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
    Sub GenererCSV()
      Dim Chemin As String, NomCSV As String, NomSource As String
      Dim wbSource As Workbook, wbTarget As Workbook
      Dim shSource As Worksheet, shTarget As Worksheet
      Dim rSource As Range, rTarget As Range
     
      On Error GoTo Catch:
      Application.ScreenUpdating = False
     
      Chemin = Range("Chemin").Value
      NomCSV = Range("Nom_Csv").Value
      NomSource = Range("Fichier_Travail").Value
     
      Set wbSource = Workbooks(NomSource)
      Set wbTarget = Workbooks.Add()
      ThisWorkbook.Activate
      Set shSource = wbSource.Worksheets("Import")
      Set shTarget = wbTarget.Worksheets(1)
     
      shTarget.Range("a1:z1").Value = shSource.Range("b1:aa1").Value
      Set rSource = shSource.Range("c3:aa" & shSource.Range("c3").End(xlDown).Row)
      Set rTarget = shTarget.Range("b3:z3").Resize(rSource.Rows.Count)
      rTarget.Value = rSource.Value
     
      wbTarget.SaveAs Filename:=Chemin & NomCSV, FileFormat:=XlFileFormat.xlCSVUTF8, local:=True
      wbTarget.Close
      wbSource.Close False
     
    Catch:
      If Err = 0 Then
        MsgBox "Le fichier a été créé"
      Else
        MsgBox "L'erreur suivante a empêché la création du fichier:" & vbLf & Err.Number & vbLf & Err.Description
      End If
    End Sub

    Il y a moyen de réaliser cela avec moins de lignes, mais je te conseille de bien découper ton code. Ce n'est pas un concours du code le plus concis, loin de là. Ici, tu peux avancer en pas-à-pas pour tester chaque partie de code, notamment pour vérifier que la feuille du futur csv a bien été remplie avec les données de l'import.

    J'espère que ceci t'aura aidée à y voir plus clair et, en tout cas, il peut être suivi ligne par ligne pour voir où ça bugue.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Annefi Voir le message
    et j'ai vérifieé en faisant pas à pas la macro prend bien les données et les copie colle dans le fichier csv le problème survient vraiment lors de l'enregistrement.
    On dirait que seul le SaveAs enregistre ton fichier mais soit la Save de fin de code enregistre un autre fichier, soit tes données sont placées dans un autre fichier.
    La succession des Activate n'aide pas à comprendre. C'est pour ça que les Activate et les Select sont déconseillés.
    Cela dit, si c'est bien ça, ça n'a rien à voir avec le changement de version.

    Essaye ça :
    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
    Sub Generer_fichier_csv()
        Dim chemin As String
        Dim nom_fichier_csv As String
        Dim nom_fichier_travail As String
        Dim WB_Dest As Workbook
        Dim WS_Dest As WorkSheet
        Dim WS_Travail As Worksheet
     
    'Definition des variables
        chemin = Sheets("Parametres").Range("chemin").Value
        nom_fichier_csv = Sheets("Parametres").Range("nom_fichier_csv").Value
        nom_fichier_travail = Sheets("Parametres").Range("nom_fichier_travail").Value
     
        Set WS_Travail = Workbooks(nom_fichier_travail).Sheets("Import")
     
    'Créer un nouveau fichier à enregistrer au format csv
        Set WB_Dest = Workbooks.Add
        WB_Dest.SaveAs Filename:= chemin & nom_fichier_csv, FileFormat:=xlCSV, CreateBackup:=False, local:=True
        Set WS_Dest = WB_Dest.ActiveSheet
     
        WS_Travail.Range("B1:AA1").Copy 
        WS_Dest.Range("A1").PasteSpecial Paste:=xlPasteValues
        WS_Dest.Range("A1").PasteSpecial Paste:=xlPasteFormats
     
        WS_Travail.Range("C3:AA" & WS_Travail.Cells(Rows.Count, "C").End(xlUp).Row).Copy 
        WS_Dest.Range("B3").PasteSpecial Paste:=xlPasteValues
        WS_Dest.Range("B3").PasteSpecial Paste:=xlPasteFormats
     
        WB_Dest.Save
        WB_Dest.Close
    End Sub

  9. #9
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    Merci Pierre pour ta réponse, je vais tester tes conseils pour en effet m'améliorer. Je n'ai jamais eu de formation en VBA je tatonne entre l'enregistreur de macro et les codes récupérés sur les forum, j'essaye de faire au mieux mais c'est pas toujours facile.

    Menhir merci pour ton code, je l'ai testé et je récupère bien les données par contre l'affichage de l'ensemble des données se trouve dans la colonne A car le séparateur de données est une virgule et non un ; Mes données contiennent des chiffres et les , sont transformées en . C'est peut être là le problème de la bascule vers office 365. Je te mets une image du résultat obtenu.

    Nom : Capture.PNG
Affichages : 1104
Taille : 8,9 Ko

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    L'argument Local:=True de SaveAs utilise ton séparateur local de liste windows.

    Que donne comme séparateur ? application.International(xllistseparator) saisi dans la fenêtre d'exécution?

    Cela dit, nativement, CSV signifie Comma Separated Value (valeurs séparées par des virgules) et donc, normalement, on devrait s'attendre à avoir la virgule comme séparateur. Pour ma curiosité personnelle: A quoi te sert ton CSV par la suite?


    Citation Envoyé par Annefi Voir le message
    Merci Pierre pour ta réponse, je vais tester tes conseils pour en effet m'améliorer. Je n'ai jamais eu de formation en VBA je tatonne entre l'enregistreur de macro et les codes récupérés sur les forum, j'essaye de faire au mieux mais c'est pas toujours facile.[...]
    Aucun souci. C'est pourquoi je parle bien de considération technique, pour que tu voies comment on peut articuler son code... D'ailleurs, Menhir t'a donné une réponse sensiblement identique à la mienne à 4 heures d'intervalle (on dirait presque du copier-coller )
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    Pierre ce fichier CSV correspond à des écritures comptables qui seront intégrées via un intégrateur dans le logiciel comptable SAGE.

  12. #12
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    L'argument Local:=True de SaveAs utilise ton séparateur local de liste windows.

    Que donne comme séparateur ? application.International(xllistseparator) saisi dans la fenêtre d'exécution?

    Cela donne un ;Nom : Capture.PNG
Affichages : 1120
Taille : 1,9 Ko

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu as bien Local:=True sur la ligne du SaveAs?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Tu as bien Local:=True sur la ligne du SaveAs?
    Oui j'ai repris exactement le code de Menhir

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je pense que le problème vient plus d'une modif de version Windows. J'ai eu le cas la semaine dernière avec une personne qui venait de migrer sur Windows 10 et cela posait un problème de séparateur décimal. Aurait-on en même temps changé ta version Windows? Quelle est ta version Windows actuelle?

    Je suis en 365 sur un win 8.1 et avec Local:=True, j'ai bien des ;
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Je pense que le problème vient plus d'une modif de version Windows. J'ai eu le cas la semaine dernière avec une personne qui venait de migrer sur Windows 10 et cela posait un problème de séparateur décimal. Aurait-on en même temps changé ta version Windows? Quelle est ta version Windows actuelle?

    Je suis en 365 sur un win 8.1 et avec Local:=True, j'ai bien des ;
    Je n'ai pas changé de version j'ai toujours windows 7, le service informatique me dit que les mises à jour peuvent apportées certain changement mais ça serait étonnant. Peut être que office 365 fonctionne mieux avec avec windows 8.1

  17. #17
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si tu crées un classeur avec quelques cellules (par exemple, de A1 à D1) puis que tu enregistre sous et tu tu choisis le format CSV avec séparateur ;, qu'obtiens-tu dans ton CSV?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Essaye :
    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
    Sub Generer_fichier_csv()
        Dim nom_fichier_csv As String
        Dim nom_fichier_travail As String
        Dim WB_Dest As Workbook
        Dim WS_Dest As Worksheet
        Dim WS_Travail As Worksheet
     
        nom_fichier_csv = Sheets("Parametres").Range("chemin").Value & Sheets("Parametres").Range("nom_fichier_csv").Value
        nom_fichier_travail = Sheets("Parametres").Range("nom_fichier_travail").Value
        Set WS_Travail = Workbooks(nom_fichier_travail).Sheets("Import")
     
        Set WB_Dest = Workbooks.Add
        Set WS_Dest = WB_Dest.ActiveSheet
     
        WS_Travail.Range("B1:AA1").Copy 
        WS_Dest.Range("A1").PasteSpecial Paste:=xlPasteValues
        WS_Dest.Range("A1").PasteSpecial Paste:=xlPasteFormats
     
        WS_Travail.Range("C3:AA" & WS_Travail.Cells(Rows.Count, "C").End(xlUp).Row).Copy 
        WS_Dest.Range("B3").PasteSpecial Paste:=xlPasteValues
        WS_Dest.Range("B3").PasteSpecial Paste:=xlPasteFormats
     
        WB_Dest.SaveAs Filename:= nom_fichier_csv, FileFormat:=xlCSV, CreateBackup:=False, local:=True
        WB_Dest.Close(False)
    End Sub

  19. #19
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2020
    Messages : 12
    Par défaut
    La macro fonctionne il fallait en effet enregistrer sous en csv après coup et pas forcément au début de la macro.
    Merci beaucoup de votre aide, je vais continuer à chercher avec l'informatique pour voir si le soucis vient de la combinaison office 365 et windows 7 pour cela on va tester sur windows 10 voir si l'ancienne macro fonctionne juste par curiosité .

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

Discussions similaires

  1. [WD-2016] Récupération du nombre d'enregistrement fichier csv
    Par nlbmoi dans le forum VBA Word
    Réponses: 12
    Dernier message: 09/04/2020, 16h27
  2. Macro enregistrer fichier csv au format xlsx avec pour nom la valeur cellule B2
    Par traderpierre54 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/08/2018, 14h56
  3. Enregistrer fichier CSV après modification
    Par Aseid dans le forum Langage
    Réponses: 5
    Dernier message: 28/02/2018, 20h07
  4. Enregistrement fichier CSV Oracle
    Par drake56 dans le forum C++
    Réponses: 5
    Dernier message: 17/02/2014, 11h30
  5. enregistrer fichier csv dans une table
    Par decksroy dans le forum Forms
    Réponses: 14
    Dernier message: 28/02/2008, 19h16

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