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 :

Modif pour Macro qui récupère contenu .TXT


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Modif pour Macro qui récupère contenu .TXT
    Un sympathique membre du forum ( rvtoulon pour ne pas le citer ... ) m'a réalisé une macro qui récupère les contenus de fichiers .TXT d'un répertoire ...
    La Macro fonctionne très bien, je l'utilise déjà en l'état ( excel 97 ), avec juste qques petites modifs pour mes besoins !

    Le code d'origine de sa Macro :

    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
    Sub test()
    Dim Chemin As String, Fichier As String
    Dim chaine As String
    'Définit le répertoire contenant les fichiers
    Chemin = "C:\Documents and Settings\Atelier\Bureau\Essai\"
     
    'Boucle sur tous les fichiers txt du répertoire.
    Fichier = Dir(Chemin & "*.txt")
    Do While Len(Fichier) > 0
      If [A1] = "" Then
     
       'boucle sur toutes les lignes du fichiers txt 
        Open (Chemin & Fichier) For Input As #1
           Do While Not EOF(1)
           Line Input #1, Ligne
           chaine = chaine + Ligne
         Loop
        Close #1
        [A1] = chaine
        chaine = ""
     
       Else
        dercel = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1
     
        'boucle sur toute les lignes du fichier txt 
        Open (Chemin & Fichier) For Input As #1
          Do While Not EOF(1)
            Line Input #1, Ligne
            chaine = chaine + Ligne
          Loop
         Close #1
     
        Range("A" & dercel) = chaine
        chaine = ""
      End If
     
      Fichier = Dir()
    Loop
    End Sub
    J'aurai juste souhaité qu'elle prenne en considération l'éventuelle "absence de contenu" dans mes fichiers .TXT ( fichiers .TXT vides ... ), et laisse la cellule vierge là où aurait du s'afficher l'éventuel contenu du .TXT, pour passer à la cellule de la ligne suivante ...
    ( En cas de fichier .TXT vide, ca crée un décalage des contenus récupérés vers le haut, et "casse" la cohérence avec mes cellules des colonnes adjacentes ... )

    Si besoin de plus d'info pour compréhension : http://www.developpez.net/forums/d1034635/logiciels/microsoft-office/excel/macros-vba-excel/recuperer-contenu-fichier-txt-cellule/#post5761511

    C'pas vraiment à ma portée cette modif ...

  2. #2
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Je te propose cette modification qui en plus allège un peu le 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 test()
    Dim Chemin As String, Fichier As String
    Dim chaine As String, Ligne As String
    Dim dercel  As Long
    'Définit le répertoire contenant les fichiers
    Chemin = "C:\Documents and Settings\Atelier\Bureau\Essai\"
     
    'Recherche de l'emplacement où commencer
    If [A1] = "" Then
        dercel = 1
    Else
        dercel = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1
    End If
     
    'Boucle sur tous les fichiers txt du répertoire.
    Fichier = Dir(Chemin & "*.txt")
    Do While Len(Fichier) > 0
     
       'boucle sur toutes les lignes du fichiers txt
        Open (Chemin & Fichier) For Input As #1
           Do While Not EOF(1)
           Line Input #1, Ligne
           chaine = chaine + Ligne
         Loop
        Close #1
     
        Range("A" & dercel) = chaine
        dercel = dercel + 1
        chaine = ""
     
        Fichier = Dir()
    Loop
    End Sub

  3. #3
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Heu ... Ben ...

    Si tu penses que ca va marcher aussi bien, et qu'en plus ca répond à ma requête, ca le fera très bien !

    Je ne pense pas pouvoir essayer avant Mardi ou Mercredi ( A mon domicile, j'ai une version trop récente d'excel ... ).


    Je te remercie, et te tiens au courant du bon fonctionnement de ladite modif !

Discussions similaires

  1. [XL-2010] Macro qui récupère des données dans des fichiers protégés
    Par Charlie3 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/02/2013, 11h45
  2. Réponses: 1
    Dernier message: 26/05/2011, 09h06
  3. Réponses: 11
    Dernier message: 05/02/2008, 14h10
  4. Réponses: 3
    Dernier message: 29/01/2008, 13h04
  5. Macro qui récupère les contrôles d'une page
    Par nitrous007 dans le forum ASP.NET
    Réponses: 15
    Dernier message: 22/05/2007, 11h46

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