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 :

Ecrire une plage excel dans un fichier txt


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 29
    Points : 9
    Points
    9
    Par défaut Ecrire une plage excel dans un fichier txt
    Bonjour,

    J'essaye de débiter une fichier excel en plusieurs fichier txt, chaque partie de chaque colonne sera envoyé dans un fichier texte avec un nom spécifique, de manière à pouvoir ensuite les traiter plus facilement.

    J'ai déjà créé la parti de code permettant de délimiter les différentes parties à exporter, et j'ai aussi réussi à créer le fichier texte dans lequel coller mes données.

    Ce que je n'arrive pas à faire, c'est écrire les données dans ce fichier.

    Je sais éventuellement qu'il me reste la méthode : copie sur une autre feuille et enregistrement sous fichier.txt mais j'imagine que le traitement sera plutôt lourd dans ce cas (à moins ce que ça soit possible en créant seulement des onglets plutôt que des feuilles excel).

    Je vous mets mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub copietexte()
     
    Sheets("Tarif").Select          'Positionnement sur l'onglet Tarif
     
    Cells.Select
    Range("A6000").Activate
    With Selection
        .Orientation = 0
        .AddIndent = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With                        'Scinder les Cellules
     
    [D65536].Select
    Selection.End(xlUp)(2).Select
    fin = ActiveCell.Row            'Définition de fin de tableau
     
    For j = 1 To fin Step 1
     
    If Range("D" & j).FormulaR1C1 = "Micro Ordinateur Portable" Then cat1 = Range("D" & j).Row
    If Range("D" & j).FormulaR1C1 = "BOITIER ATX - FACADE USB" Then cat1bis = Range("D" & j).Row
     
    Next j
     
    plageacopier = Range(Cells(cat1, 1), Cells(cat1bis - 1, 1)).Value
     
     
    Open "C:\...\test.txt" For Output As #1
    Print#1, plageacopier
    Close #1
     
     
    End Sub
    Ce code plante à la ligne "Print#1, plageacopier", apparament il sait pas coller les données exel.

    Merci pour votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour
    essaie avec cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    plageacopier = Range(Cells(cat1, 1), Cells(cat1bis - 1, 1)).Formula
    Open "C:\...\test.txt" For Output As #1
    Print #1, plageacopier+ ";";
    Bonne journée.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Il semblerait que ça plante au même endroit.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    comment tu as difini cat1 et cat1bis ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Je suis pas sûr de comprendre ta question , cat1 et cat1bis sont défini dans le code que j'ai mis en début de sujet.

    Contrètement, ma feuille xls est une suite de tarifs délimités par titres de section comme "ordinateur portable" ou "périphériques". Je repère ces titres de section et cat1 et cat1bis (et cat2 et cat3 ... mais j'ai aps mis toutes les lignes dans le code collé au dessus pour ne pas que ça soit trop lourd, c'est répétitif de toutes manières) correspondent aux numéros de lignes de ces titres.
    De cette manière je peux ensuite délimiter les plages correspondantes.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    je n'ai pas tous compris mais je te donne un code qui fonctionne trés bien à adapter selon tes besoin, ce code créer un fichier texte et le remplire par les données de la feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()      
            Open "F:\Doc2008\Fichier.txt" For Output As #1
            For i = 1 To 10  'les données sont lues ligne par ligne...
                For j = 1 To 2    '... colonne après colonne
                    Print #1, Cells(i, j).Formula + ";";
                Next j
                Print #1, Cells(i, j + 1).Formula   'crée un crlf en fin de ligne avant de passer à la suivante
            Next i
            Close #1
    End Sub
    Bonne chance.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Merci pour ton aide

    En fait je cherchais à copier seulement une partie de la feuille en cours dans un fichier texte, mais cela semble impossible. J'ai donc choisi la solution de créer un nouvel onglet, coller les données à ecrire sur le txt, sauvegarder la feuille en tant que txt et supprimer l'onglet.

    C'est similaire à la solution que tu proposes.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2014, 11h12
  2. [Toutes versions] Copier une valeur excel dans un fichier .txt
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/03/2010, 21h05
  3. [SQL-VBA] récupérer le résultat d'une requète SQL dans un fichier txt
    Par djidanestribbal dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/02/2007, 15h25
  4. ecrire une touche directionnelle dans un fichier excel
    Par aA189 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2006, 20h41
  5. [VBA-E] Exporter une page Excel vers un Fichier Txt
    Par mamantins dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2006, 11h09

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