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 plusieurs feuilles dans un même fichier texte


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 14
    Points
    14
    Par défaut exporter plusieurs feuilles dans un même fichier texte
    Bonjour à tous,
    j'ai un classeur excel avec plusieurs feuilles qui sont toutes quasiment plaines... Chaque nouvelle feuille est en fait la suite de la précédente... Une feuille contient à chaque fois 6 colonnes et x lignes. J'aimerais donc obtenir un seul fichier : un fichier texte avec séparateur : tabulation... afin d'importer sous un logiciel de stat.
    J'ai commencé à écrire un 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
    Sub Macro1()
     
        Dim CL1 As Workbook
        Dim FL2 As Worksheet
     
        ChDir "D:\romain\travail\extraction_sophy"
        Set CL1 = Workbooks.Open("D:\romain\travail\extraction_sophy\tabflo_sophy_1to715.xls")
        For Each FL2 In CL1.Worksheets
            Cells(1, 1).Select
            Selection.End(xlDown).Select
            Lf = ActiveCell.Row
            Cells(1, 1).Select
            Selection.End(xlToRight).Select
            Cf = ActiveCell.Column
            Open "essai.txt" For Output As #1 'Crée un fichier par ajout
            For i = 1 To Lf
                Print #1, Range(Cells(i, 1), Cells(i, Cf)).Select
            Next i
            Close #1
        Next
    End Sub

    le script marche mais ne me renvoit pas ce que je veux dans le fichier texte... il marque :
    vrai
    vrai
    vrai
    ...

    Et mon second problème c'est que j'ai peur que quand je passe à une autre feuille, mes données du fichier texte de la feuille précédente soient effacé ou écrasé par les données de la nouvelle feuille...

    Un petit peu d'aide ne serait pas de refus...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Moi je le verrais mieux comme ça :

    Citation Envoyé par rom05 Voir le message
    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
        For Each FL2 In CL1.Worksheets
            Cells(1, 1).Select
            Selection.End(xlDown).Select
            Lf = ActiveCell.Row
            Cells(1, 1).Select
            Selection.End(xlToRight).Select
            Cf = ActiveCell.Column
            Open "essai.txt" For Output As #1 'Crée un fichier par ajout
            For i = 1 To Lf
                varChaine = cells(i,1)
                for j = 2 to Cf
                     varChaine = varChaine & chr(9) & cells(i,j)    'note : chr(9) équivaut à une tabulation            
                next j
                Print #1, varChaine
            Next i
            Close #1
        Next
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Et tu as raison d'avoir peur pour l'écrasement

    Mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open "essai.txt" For Output As #1 'Crée un fichier par ajout
    avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each FL2 In CL1.Worksheets
    et après

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 14
    Points
    14
    Par défaut çà marche presque
    bien vu,.... t'as façon de faire marche... enfin jusqu'à la fin de la feuille une mais après erreur 52 (nom ou numéro de fichier incorrect...
    je continue à chercher mais comprend pas trop ce qu'il me reproche!!!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Tu devrais avoir ça comme 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
     
    Sub Macro1()
     
    Dim CL1 As Workbook
    Dim FL2 As Worksheet
     
    ChDrive "D"
    ChDir "D:\romain\travail\extraction_sophy"
    Set CL1 = Workbooks.Open("D:\romain\travail\extraction_sophy\tabflo_sophy_1to715.xls")
     
    Open "essai.txt" For Output As #1 'Crée un fichier par ajout
     
    For Each FL2 In CL1.Worksheets
        Cells(1, 1).Select
        Selection.End(xlDown).Select
        Lf = ActiveCell.Row
        Cells(1, 1).Select
        Selection.End(xlToRight).Select
        Cf = ActiveCell.Column
        For i = 1 To Lf
            varChaine = Cells(i, 1)
            For j = 2 To Cf
                varChaine = varChaine & Chr(9) & Cells(i, j)   'note : chr(9) équivaut à une tabulation
            Next j
            Print #1, varChaine
        Next i
        Cells(1, 1).Select
    Next
     
    Close #1
     
    End Sub

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    ouai c bien le code que j'ai...
    en fait, c'est comme si la boucle for each ne marchait pas :
    si j'ai 2 feuilles, il se place sur celle active et la copie 2 fois dans le fichier txt mais ne copie pas la feuille 2.
    Etrange...
    Merci de ton aide en tout cas

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    ah oui... ce doit être normal dans la mesure où en fait on ne lui dit nulle part de changer de feuille active, et comme on ne place pas non plus les Cells(...) dans FL2...

    Tu pourrais essayer avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each FL2 In CL1.Worksheets
       FL2.Activate
       ...

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 14
    Points
    14
    Par défaut BRAVO
    ALors moi je dis respect et bravo... je pensais que la feuille s'activait toute seule après chaque next...
    merci çà marche!!!!!

  9. #9
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open "essai.txt" For Append As #1

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 333
    Points
    24 333
    Par défaut
    Quel dommage de créer un objet FL2 et de ne pas s'en servir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For Each FL2 In CL1.Worksheets
        Lf = FL2.Cells(1, 1).End(xlDown).Row
        Cf = FL2.Cells(1, 1).End(xlToRight).Column
        For i = 1 To Lf
            varChaine = FL2.Cells(i, 1)
            For j = 2 To Cf
                varChaine = varChaine & Chr(9) & FL2.Cells(i, j)   'note : chr(9) équivaut à une tabulation
            Next j
            Print #1, varChaine
        Next i
        FL2.Cells(1, 1).Select
    Next

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

Discussions similaires

  1. [AC-2007] Export de plusieurs tables dans un seul fichier Texte
    Par dimitrak dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/10/2013, 08h41
  2. Réponses: 4
    Dernier message: 05/02/2008, 22h00
  3. Réponses: 9
    Dernier message: 25/07/2007, 22h24
  4. Réponses: 5
    Dernier message: 15/03/2007, 12h21
  5. Réponses: 8
    Dernier message: 23/06/2006, 14h51

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