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 :

Conversion XLS en fichiers TXT


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Points : 40
    Points
    40
    Par défaut Conversion XLS en fichiers TXT
    Bonjour a tous,

    J'aimerai avoir quelques pistes concernant la conversion d'un fichier XLS contenant plusieurs sheets vers un fichier texte.

    Je dispose donc d'un fichier EXCEL contenant n onglets avec pour chacun d'eux un tableau. Il faut savoir que tous les tableaux de tous les onglets ont la même structure (même nombre et noms de colonnes).

    J'aimerai écrire une macro qui lit tous les onglets et les tableaux et qui me génère au final un fichier texte regroupant toutes les données.

    Le fichier texte devra contenir par exemple :

    NomFichier_NumeroOnglet ContenuCol1 ContenuCol2 ...


    Merci beaucoup pour votre aide

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Tu peux commencer par jeter un oeil sur ce tuto concernant la manipulation des fichiers et notamment les fichiers "texte"

    http://warin.developpez.com/access/fichiers


  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Points : 40
    Points
    40
    Par défaut
    J'ai réussi a ouvrir le dossier contenant les fichiers excel et à les ouvrir un par un.

    J'aimerai savoir maintenant comment écrire la structure du tableau dans le fichier texte, les colonnes séparées par une tabulation ou un ;

    Merci

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Voici un exemple à adapter pour tes fichiers, chemin d'accès, nombre de lignes, de colonnes, etc...

    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
    Sub test()
    Dim intFic As Integer, x As Integer, y As Integer, Vtemp As String
     
    intFic = FreeFile
    'ouverture du fichier texte
    Open "D:\Temp\Test.txt" For Append As intFic
     
    'boucle sur les lignes
    For x = 1 To 10
        Vtemp = ""
        'boucle sur les colonnes
        For y = 1 To 5
            'récupération des données des colonnes de la ligne x
            If y = 5 Then
                Vtemp = Vtemp & Cells(x, y)
            Else
                Vtemp = Vtemp & Cells(x, y) & " ; "
            End If
        Next y
        'inscription des données de la ligne x dans le fichier texte
        Print #intFic, Vtemp
    Next x
     
    Close intFic
    End Sub

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Points : 40
    Points
    40
    Par défaut
    Merci Fring pour ton exemple.

    Donc en fait, avec cet exemple je vais pouvoir découper mon tableau colonne par colonne. Une variable pour la colonne 1, une autre pour la 2... car il se peut que je ne garde pas toutes les colonnes.

    Ensuite, dans mon fichier texte, je vais créer la structure du tableau (l'entête). Mais comment je vais faire pour insérer dans le fichier texte le contenu de mon tableau découpé colonne par colonne ?

    2 petites questions :

    - Est ce que je peux lui dire, tu me sélectionnes la colonne 1 tant qu'il y a des rows dans la colonne ?
    - Mon tableau commencant à la ligne 4, comment lui dire d'ignorer les 3 premières rows ?


    Merci pour votre aide !

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par psgkiki Voir le message
    Donc en fait, avec cet exemple je vais pouvoir découper mon tableau colonne par colonne. Une variable pour la colonne 1, une autre pour la 2... car il se peut que je ne garde pas toutes les colonnes.

    Ensuite, dans mon fichier texte, je vais créer la structure du tableau (l'entête). Mais comment je vais faire pour insérer dans le fichier texte le contenu de mon tableau découpé colonne par colonne ?
    Non pas vraiment, tu ne vas pas pouvoir écrire colonne par colonne (à moins de construire une usine à gaz) mais ligne par ligne. A chaque fois que l'on envoie l'instruction d'écrire dans le fichier texte, les données seront écrites à la ligne suivante. Le mieux pour que tu comprennes le fonctionnement est que tu testes le petit bout de code que je t'ai fourni.
    1. Ouvre un nouveau classeur et colle le code dans un module
    2. inscrit des données dans les cellules A1 à D10
    3. crée un petit fichier texte et enregistre le sous le même nom et même chemin que celui du code ce qui t'évitera de devoir modifier le code (fichier "Test.txt" à fermer et enregistrer dans D:\temp)
    4. exécute la macro et réouvre le fichier Test.txt

    Citation Envoyé par psgkiki Voir le message
    - Est ce que je peux lui dire, tu me sélectionnes la colonne 1 tant qu'il y a des rows dans la colonne ?
    mmm...la je crains de ne pas bien comprendre la question, des rows (lignes) il y en aura toujours dans ta colonne. Si c'est pour boucler jusqu'à la dernière ligne utilisée dans ta colonne, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim DerL As Long
    'supposons pour la colonne A
    DerL = Cells(Rows.Count, 1).End(xlUp).Row
    'DerL contiendra le numéro de la dernière ligne utilisée
    Citation Envoyé par psgkiki Voir le message
    - Mon tableau commencant à la ligne 4, comment lui dire d'ignorer les 3 premières rows ?
    Lorsque tu boucles sur tes lignes, il suffira de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For x = 4 To DerL
    'Pourquoi 4 ? parce que tu veux commencer à la ligne 4 :aie:
    'Pourquoi DerL ? parce qu'on a cherché la dernière ligne ci-avant et qu'on l'a stockée dans la variable DerL

  7. #7
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup pour toutes vos réponses.

    J'ai réussi a faire ce que je voulais faire.

    Par contre, une autre petite question : En parcourant mon tableau (1ere colonne), j'aimerai détecter si le texte présent dans la cellule est barré.

    J'ai essayé de faire cela mais cela ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set lw_xlsCurrentFile = Workbooks.Open(Filename:=ao_XLSfileName)
    ...
    If lw_xlsCurrentFile.ActiveSheet.Cells(i, 1).Font.Strikethrough = True Then
                    MsgBox "Texte barré"
    Merci beaucoup

Discussions similaires

  1. [AC-2003] conversion table vers fichier txt
    Par novice06 dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/05/2010, 09h16
  2. Conversion dynamique de fichiers txt d'un dossier en xls.
    Par Zaltymbunk dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 20/12/2008, 15h42
  3. conversion fichier txt en xls
    Par america1 dans le forum Excel
    Réponses: 2
    Dernier message: 22/05/2007, 22h23
  4. conversion en masse de fichier txt en xls
    Par anisr dans le forum VBScript
    Réponses: 2
    Dernier message: 06/03/2007, 15h32
  5. Conversion fichier txt en xls
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2007, 13h54

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