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 :

Regrouper plusieurs fichiers textes dans la même feuille


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Regrouper plusieurs fichiers textes dans la même feuille
    Bonjour,
    je suis étudiant ingénieur en Génie civil et j'ai un projet de labo à rendre.
    Pour cela je dois traiter un nombre très important de données au format .atf ( assimilable à un fichier texte)
    j'aimerai être capable de définir un dossier dans lequel le programme pourrait extraire toutes les données des fichiers textes .atf présents dans ce dossier.

    Cependant, dans chaque fichier texte seul la première colonne est à conserver, et il faudrait qu'au final toutes les colonnes se retrouvent côte à côte.

    Je n'y arrive absolument pas, je n'ai que tres peu de notions en VBA et les seuls programmes que j'ai pu trouver me permettent : soit de tout importer dans un seul classeur mais j'ai une feuille par fichier txt ( ingérable avec +700 fichiers )
    soit de tout importer mis les colonnes s'importent les unes à la suite des autres.

    auriez vous de pistes ?

    merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 413
    Points : 16 255
    Points
    16 255
    Par défaut
    Bonjour

    Tous les fichiers ont le même nombre de lignes ? Combien à peu près ?

    Probablement faisable par PowerQuery intégré à 2016
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    oui ils ont tous à peu pres 2030 lignes, chacuns à le meme nobre de lignes
    j'ai réussi à faire quelque chose de potable finalement, mais maintenant il me faudrait un fonction qui permette de faire une séléction multiple etles mettre dans ma " liste de fichiers" séléctionnés

    voilà la totalité du code que j'ai :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Dim ligne_debut As Integer: Dim colonne_debut As Integer
    Dim ligne_fin As Integer: Dim colonne_fin As Integer
    Dim ligne_enCours As Integer: Dim colonne_enCours As Integer
    Dim j As Integer
     
     
     
    Private Sub Exporter_Click()
    j = 1
     
    ligne_debut = 2: colonne_debut = 2
    ligne_enCours = ligne_debut: colonne_enCours = colonne_debut
    Cells.Clear
    For I = 0 To liste_fichiers.ListCount - 1
    lecture (liste_fichiers.List(I))
    j = j + 1
    ligne_enCours = ligne_debut
     
    Next I
     
     
    End Sub
     
    Private Sub Fermer_Click()
    Close
     
     
    End Sub
     
    Private Sub Importer_Click()
    Dim fichier_choisi As Variant
    fichier_choisi = Application.GetOpenFilename("Atf Files (*.atf), *.ATF", , "Sélectionner le fichier ATF", , False)
    liste_fichiers.AddItem (fichier_choisi)
     
    End Sub
    Sub lecture(fichier As String)
     
    Dim depart As Integer, position As Integer
    Dim texte As String, tampon As String
     
    Open fichier For Input As #1
     
    Do While Not EOF(1)
     
        Line Input #1, texte
        depart = 1: position = 1
        Do While (position <> 0)
        position = InStr(depart, texte, ";", 1)
     
            If position = 0 Then
            tampon = Mid(texte, depart)
            Sheets("Import").Cells(ligne_enCours, j).Value = tampon
            Else: tampon = Mid(texte, depart, position - depart)
     
     
            Exit Do
            End If
            Sheets("Import").Cells(ligne_enCours, j).Value = tampon
            depart = position + 1
            colonne_enCours = colonne_enCours + 1
     
        Loop
     
     
    colonne_enCours = colonne_debut
    ligne_enCours = ligne_enCours + 1
     
     
     
    Loop
     
     
     
     
    Close #1
     
     
    End Sub
     
    Private Sub ecriture(fichier As String)
     
    End Sub
     
    Private Sub traitement()
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 660
    Points : 5 783
    Points
    5 783
    Par défaut
    Bonjour,

    Une proposition:
    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 import_fic()
    Dim myFile As Variant
    Dim i As Integer
    Application.ScreenUpdating = False
     
    myFile = Application.GetOpenFilename(MultiSelect:=True) 'selection de tous les fichiers à importer
        For i = LBound(myFile) To UBound(myFile)
            Workbooks.OpenText (myFile(i)) 'faire une ouverture manuelle avec l'enregistreur de macro pour le paramétrage optimal de la méthode opentext
            ActiveWorkbook.Columns(1).Copy
            ThisWorkbook.Sheets("mafeuille").Columns(i).Paste
            ActiveWorkbook.Close False
        Next i
     
    Application.ScreenUpdating = True
    End Sub
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci halaster pour ta réponse, c'est ce type de sélection qu'il me faut mais cela ne marche pas, j'ai une erreur :

    erreur d'execution '438':
    propriété ou méthode non géré par cet objet
    d'après le debug c'est la ligne ActiveWorkbook.Columns(1).Copy qui poserai problème

    et du coup seul 1 fichier est importé

    une idée de la solution ?

    merci encore pour ton aide !

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 660
    Points : 5 783
    Points
    5 783
    Par défaut
    Citation Envoyé par heliasius Voir le message
    d'après le debug c'est la ligne ActiveWorkbook.Columns(1).Copy qui poserai problème
    Désolé manque de relecture: ActiveWorkbook.sheets(1).Columns(1).Copy

    edit: a noter que ma proposition est une adaptation d'un code similaire que j'utilise et que je n'ai pas eu le temps de la tester (d'où l'erreur signalée et peut être d'autre), il est aussi incomplet (il manque les arguments du OpenText, et j'ai peut être loupé quelques subtilité dans tes explications)
    C'est donc une proposition qu'il te faut adapter, ou t'en inspirer pour modifier ton code existant.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

Discussions similaires

  1. [XL-2010] Importer plusieurs fichiers texte dans une feuille excel
    Par KekileM dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/03/2017, 08h01
  2. Réponses: 11
    Dernier message: 10/05/2011, 09h21
  3. ouvrir plusieurs fichier texte dans une seule feuille
    Par popoye dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/04/2008, 15h28
  4. Ouvrir plusieurs fichier textes dans un dossier : *texte.txt
    Par Jenn74 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2007, 16h52
  5. Réponses: 5
    Dernier message: 07/09/2004, 17h38

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