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 :

Macro Export d'onglets au format .txt


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 1
    Par défaut Macro Export d'onglets au format .txt
    Bonjour à tous,

    Je suis novice en VBA.
    Je souhaite réaliser une macro afin d'autmatiser l'export de tous les onglets de mon fichier Excel au format .txt
    Pour cela j'ai utilisé l'enregistreur de macro en partie mais mon problème est que certains champs, qui contiennent des virgules, sont entourés de guillemets lorsque les fichiers sont exportés par la macro. Cela ne se produit pas quand je fais la manipulation à la main.

    Après plusieurs recherches, j'ai essayé le format "xlTextPrinter" mais cela ne me convient pas; j'ai regardé du côté du panneau de configuration pour changer le caractère délimitateur de liste et mettre le ";", cela fonctionne sur mon PC. Cependant l'outils sera utilisé sur différents ordinateurs et je ne peux pas imposer la configuration aux autres personnes suceptibles d'utiliser cet outil.

    J'en appelle à votre aide pour savoir comment faire, si cela est possible, pour avoir une solution "viable" peu importe la configuration du PC ?

    PS : J'ai aussi vu qu'il était possible de parcourir les fichiers et de remplacer les guillemets mais je ne maîrise pas du tout la lecture/ouverture/ecriture de fichiers en VBA ...

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Tiré de cette page, et légèrement modifié pour fonctionner avec fichiers .xls et .xlsm, sauve la feuille active sous le nom nom_du_fichier.txt:
    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
    'https://excelribbon.tips.net/T009243_Specifying_a_Delimiter_when_Saving_a_CSV_File_in_a_Macro.html
    Sub CreateFile()
        Dim sFName As String
        Dim Rows As Long
        Dim Cols As Long
        Dim J As Long
        Dim K As Long
        Dim sTemp As String
        Dim sSep As String
     
        sSep = ";"  'Specify the separator to be used
     
        sFName = ActiveWorkbook.FullName
        If sFName Like "*.xls*" Then
            sFName = Left(sFName, InStrRev(sFName, "."))
            sFName = sFName & "txt"
            Open sFName For Output As 1
     
            With ActiveSheet
                'Number of rows to export is based on the contents
                'of column B. If it should be based on a different
                'column, change the following line to reflect the
                'column desired.
                Rows = .Cells(.Rows.Count, "B").End(xlUp).Row
                For J = 1 To Rows
                    sTemp = ""
                    Cols = .Cells(J, .Columns.Count).End(xlToLeft).Column
                    For K = 2 To Cols
                        sTemp = sTemp & .Cells(J, K).Value
                        If K < Cols Then sTemp = sTemp & sSep
                    Next
                    Print #1, sTemp
                Next J
            End With
     
            Close 1
     
            sTemp = "There were " & Rows & " rows of data written "
            sTemp = sTemp & "to this file:" & vbCrLf & sFName
        Else
            sTemp = "This macro needs to be run on a workbook "
            sTemp = sTemp & "stored in the .XLS* format."
        End If
     
        MsgBox sTemp
    End Sub
    A adapter pour sauvegarder les feuilles une à une (ou l'une à la suite de l'autre).
    Cordialement.

  3. #3
    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 elotd Voir le message
    Je souhaite réaliser une macro afin d'autmatiser l'export de tous les onglets de mon fichier Excel au format .txt
    Pour cela j'ai utilisé l'enregistreur de macro en partie mais mon problème est que certains champs, qui contiennent des virgules, sont entourés de guillemets lorsque les fichiers sont exportés par la macro. Cela ne se produit pas quand je fais la manipulation à la main.
    Il aurait été préférable que tu présentes le code qui permet cet enregistrement.

    Je vais donc supposé que tu as utilisé la méthode SaveAs pour faire cet enregistrement.
    Le problème, c'est que Excel utilise par défaut les paramètres français (séparateur ";") et VBA les paramètres anglophone (séparateur ",").

    As-tu essayer de mettre le paramètre "Local" à True dans ton SaveAs ?
    Lire ça : https://docs.microsoft.com/fr-fr/off...ectedfrom=MSDN

Discussions similaires

  1. pb exportation de date au format txt
    Par karidrou dans le forum Modélisation
    Réponses: 1
    Dernier message: 24/09/2012, 16h21
  2. Macro ou VBA pour exporter toutes mes feuilles au format *txt
    Par jakadam dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/08/2011, 01h58
  3. Export des données au format txt
    Par Marie33 dans le forum SAS Base
    Réponses: 7
    Dernier message: 05/12/2008, 14h16
  4. Export au format txt : gestion des NULL
    Par guidav dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2006, 11h28
  5. Export des données au format txt
    Par wolflinger dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 05/05/2006, 10h47

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