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 :

Ecriture apostrophe en début de donnée dans un .txt


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Par défaut Ecriture apostrophe en début de donnée dans un .txt
    Bonjour à tous,

    J'ai un soucis avec les apostrophes et les guillemets lors de la sauvegarde d'un fichier de données en fichier texte.

    Voici à quoi ressemble mon tableau :



    Et je veux que mon fichier texte à la sortie ressemble à ça :

    '00000001H1','00000015D1','00000020J4','00000026H5'

    Pour cela j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    wbOut.Worksheets(1).Range("A1").Value = "'" & wbOut.Worksheets(1).Range("A1").Value & "'"
    For Each cell In wbOut.Worksheets(1).Range("A2:A" & wbOut.Worksheets(1).Range("A65535").End(xlUp).Row)
        wbOut.Worksheets(1).Range("A1").Value = wbOut.Worksheets(1).Range("A1").Value & ",'" & cell.Value & "'"
        cell.ClearContents
    Next cell
     
    'On on sauvegarde le fichier en .txt pour import dans VASCO
    Application.DisplayAlerts = False
     
    'wbOut.SaveAs Filename:=sOutput, FileFormat:=xlTextPrinter, CreateBackup:=False
    wbOut.SaveAs Filename:=sOutput, FileFormat:=xlTextWindows, CreateBackup:=False
    wbOut.Close
     
    Application.DisplayAlerts = True
    Et là j'ai plusieurs problèmes, si j'utilise le format xlTextWindows dans ma fonction SaveAs je me récupère des guillemets au début et à la fin de ma chaîne de caractères et la première apostrophe a disparue dans le processus.

    "00000001H1','00000015D1','00000020J4','00000026H5''"
    Si j'utilise le fomat xlTextPrinter je n'ai plus les guillemets en début en fichier mais l'apostrophe est toujours absente et il y a des sauts de lignes automatique qui se font tous les 240 caractères (oui en fait mon tableau fait plus de 4 lignes)

    Auriez-vous une idée de comment je pourrais faire pour avoir le format que je recherche ?

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    bonjour,
    je ne suis pas certain d'avoir compris!
    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
    Sub test()
    Dim txt As String
    With Sheets("Feuil1").Range("A1").CurrentRegion
        For I = 2 To .Rows.Count
        If txt <> "" Then txt = txt & ","
            txt = txt & "'" & .Cells(I, 1).Value & "'"
        Next
    End With
    CreerFichierText Environ("Temp") & "\Feuil1.CSV", txt
    End Sub
    Private Sub CreerFichierText(Fichier As String, txt As String)
    Dim fso, NewFichier
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = fso.OpenTextFile(Fichier, 2, True)
    NewFichier.Write txt
    NewFichier.Close
    Set NewFichier = Nothing
    Set fso = Nothing
    End Sub

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Ce n'est pas un format très standard de fichier .txt.

    Je te suggère d'écrire directement dans le fichier sans passer par les fonctions d'export de Excel.

    Ici un exemple de code.

    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
     
    dim numFic as long: numFic=freefile()
    dim nomFic as string:nomFic="x:\TonChemin\TonFichier.txt"
    open nonFic for output as #numfic
     
    dim cell as range:
     
    for each cell in wbOut.Worksheet(1).colums("A").cells
     
       if cell.value="" then
           exit for 'il n'y a plus de données
       end if
     
       if cell.row>1 then
           print #numfic, ","; 'Ajoute la virgule entre les éléments
       end if
     
       print #numfic, "'" & cell.value & "'"; 'Ajoute l'élément à la suite des autres dans le fichier
    next cell
     
    print #numFic, "" 'Termine le fichier
    close #numFic
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Par défaut
    @Thumb down : Bah apparemment tu as bien compris vu que ta solution marche super bien , merci beaucoup.

    @marot_r : Oui ce n'est pas très standard c'est un fichier qui sert pour import dans un autre soft plus loin. J'avoue que je me suis posé la question, après coup, de passer par les fonctions fso (ce qui marche) mais j'imagine que ta solution fonctionne aussi.

    En tous cas merci à tous les 2 pour ces solutions.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Les 2 solutions sont sur le même principe, tu écris directement le fichier texte sans utiliser les fonctions de Excel.

    La mienne utilise un mécanisme qui existait déjà avant les librairies FSO.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Enregistrement de 2 données dans un .txt
    Par cyrux dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/03/2009, 19h24
  2. Récuperation de données dans un .txt complexe
    Par hidies dans le forum MATLAB
    Réponses: 9
    Dernier message: 05/03/2007, 15h04
  3. Exporter et récupérer des données dans un txt
    Par Death83 dans le forum MATLAB
    Réponses: 3
    Dernier message: 26/01/2007, 15h59
  4. Problème pour récuperer donnée dans un txt
    Par Maldus dans le forum Delphi
    Réponses: 4
    Dernier message: 15/10/2006, 21h19
  5. lire données dans fichier txt
    Par flo456 dans le forum Langage
    Réponses: 5
    Dernier message: 14/09/2006, 08h01

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