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 xls en txt (sans passer par enregistrer au format *.txt)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Points : 27
    Points
    27
    Par défaut Exporter xls en txt (sans passer par enregistrer au format *.txt)
    Bonjour,

    Je viens vous poser un problème sur lequel je butte sans pouvoir trouver de réponse, je m'explique :

    mon but est de construire un fichier kml (google) à partir d'information contenue dans une feuille excel. Pour ça je n'ai aucun soucis pour obtenir le code que le fichier kml devrait contenir. Pour le moment ça fonctionne en faisant un copier-coller manuel du code vers un fichier txt, puis enregistrement en *.kml.

    Le problème survient lorsque je le fait par une macro, donc enregistrer sous/ fichier texte ou directement en fichier kml. Le bug se produit pour les lignes de mon code qui contiennent déjà des guillements " : excel lors de l'export m'insère en plus un guillement au début et à la fin de chaque ligne qui contient normalement dans le code kml un ".

    J'ai déjà épuré les forums sur ce problème d'export.

    J'ai trouvé une solution de contournement mais un peu plus difficile à mettre en place :

    Dans mon fichier excel je remplace tous les " normaux disons par un autre caractère qui n'apparait nulle part dans mon code exemple : le dollar $. La je lance l'export en fichier txt.

    Mon but est d'ensuite aller toujours via vba, ouvrir le fichier texte et supprimer tous les guillements " rajoutés lors de l'export, puis remplacer les $ par des guillements.

    Je sais c'est un peu couillon comme solution mais sur le papier ça marche...
    Mais je ne connais pas les codes correspondant au traitement des fichiers txt.


    J'ai également trouver une autre solution (peut-être plus simple), c'est d'aller inscrire directement les données contenue dans la colonne A dans un fichier texte. J'ai trouver ce code (je ne sais plus trop où) qui inscrit ici plusieurs fois la valeur de A4 dans plusieurs lignes dans le fichier texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub EcrireTxt()
     
    Dim Fs As Object, A As Object
    Dim i As Byte
     
    Set Fs = CreateObject("Scripting.FileSystemObject")
    Set A = Fs.CreateTextFile("C:\Users\Public\Fichier Vide.txt", True)
    For i = 1 To 10
    A.WriteLine (Sheets("kml").Range("A4").Value)
    Next i
    A.Close
     
    End Sub
    Ca fonctionne, mais ce que je voudrais c'est incrire mes données contenues dans ma colonne A, ligne par ligne

    Quelqu'un aurait il ne proposition ?

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 989
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 989
    Points : 29 033
    Points
    29 033
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a plusieurs méthodes pour écrire dans un fichier texte.
    Je te conseille la lecture de ce tuto

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu étais trop près
    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
    Sub EcrireTxt()
    Dim Fs As Object, A As Object
    Dim i As Long
     
    Set Fs = CreateObject("Scripting.FileSystemObject")
    Set A = Fs.CreateTextFile("C:\Users\Public\Fichier Vide.txt", True)
    With Sheets("kml")
       For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
          A.WriteLine (.Range("A" & i).Value)
       Next i
    End With
    A.Close
    Set A = Nothing
    Set Fs = Nothing
    End Sub

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    cool ! Merci pou le code, effectivement il ne manquait pas grad chose mais je débute dans les boucles

    Merci à toi corona, j'en aurai peut-être besoin plus tard dans mes travaux !

    Longue vie a ce forum !

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

Discussions similaires

  1. Exporter les données vers excel sans passer par un agent
    Par debdev dans le forum Lotus Notes
    Réponses: 3
    Dernier message: 04/10/2013, 01h10
  2. Réponses: 0
    Dernier message: 10/01/2013, 13h04
  3. Réponses: 4
    Dernier message: 08/04/2006, 10h10
  4. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 20h13
  5. [Kylix] Débrider Kylix sans passer par le Net
    Par BXDSPORT dans le forum EDI
    Réponses: 1
    Dernier message: 23/03/2003, 11h52

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