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 :

ouverture plusieurs fichiers txt en xls


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    ingenieur
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Par défaut ouverture plusieurs fichiers txt en xls
    Bonjour ,

    Je dispose d'un répertoire contenant plusieurs fichier .txt que je désire ouvrir un à un en xls pour effectuer des traitements dessus.
    J'arrive tout à fait à ouvrir un fichier .txt et à effectuer mes traitements dessus avec la commande suivante :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks.OpenText Filename:=" MonFichier", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True

    En revanche quand je passe à l'étape ou il faut ouvrir tous les fichiers .txt du répertoire pour faire les traitements je bloque.. Mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Chemin = "MonChemin"
    Fichier = Dir(Chemin & "*.txt")
     
    Do While Len(Fichier) > 0
     Worbooks.OpenText Filename:=Fichier, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    Loop
    Lorsque j’exécute la macro une erreur apparait : "Erreur d'éxécution 42" Objet Requis

    Pouvez vous m'aider?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    3 petites choses

    1/ La fonction Dir retourne potentiellement une chaine de caracteres vide
    2/ La fonction Dir retourne uniquement le nom du fichier, et non pas l'integralite de son emplacement
    3/ Pour parcourir, il faut au moins mettre a jour a l'interieur de ta boucle la valeur de Fichier

    On arrivera donc a un code du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Fichier = Dir(Chemin & "*.txt")
     
    Do While Len(Fichier) > 0
     Worbooks.OpenText Filename:=Chemin & Fichier, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    Fichier = Dir()
    Loop
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Femme Profil pro
    ingenieur
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Par défaut
    Bonjour,

    Merci pour la réponse.
    Je me suis assuré effectivement que Fichier n'était pas une chaîne de caractère vide et en mettant un espion je constate qu'il prend bien le nom du premier fichier txt qui se trouve dans mon répertoire
    Effectivement il fallait aussi tester le code suivant pour que le chemin soit bien indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do While Len(Fichier) > 0
     Worbooks.OpenText Filename:=Chemin & Fichier, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    Malheureusement même avec cela j'ai toujours la même erreur. Et j'ai bien fait attention à mettre un \ à la fin du nom du répertoire

    Une autre idée?

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    a vérifier
    1. ton chemin est il valide
    2. termine t il bien par "\"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le code suivant fonctionne chez moi :

    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
     
    Option Explicit
     
    Sub Essai()
     
    Dim Chemin As String
    Dim Fichier As String
     
        Chemin = "XXXX\"
        Fichier = Dir(Chemin & "*.txt", vbNormal)
     
        Do While Fichier <> ""
           Workbooks.OpenText Filename:=Chemin & Fichier, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Semicolon:=True
          ' MsgBox Fichier
           Fichier = Dir
        Loop
     
    End Sub
    Il y a une erreur dans votre code : écrire WorkBooks au lieu de Worbooks.
    Pour éviter ce genre de problème, mettez Option Explicit en tête de vos modules et avant lancer le débogage avant d'activer le code.

    Cordialement.

  6. #6
    Membre averti
    Femme Profil pro
    ingenieur
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Par défaut
    Bonjour,

    Effectivement l'erreur venait simplement Workbooks mal orthographié...
    Cependant maintenant lorsque je lance la macro en mode debug une erreur apparait que je n'avais pas lorsque je traitais un seul fichier. voici 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
    Public sheDonneesSource As String
    Dim Fichier As String, Chemin As String
    Chemin = "xxxx\"
    Fichier = Dir(Chemin & "*.txt")
     
    Do While Fichier <> ""
        Workbooks.OpenText Filename:=Chemin & Fichier, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
     
    sheDonneesSource = ActiveSheet.Name
    Sheets(sheDonneesSource).Activate
        Set RLigne = Sheets(sheDonneesSource).Range(Range("A2").End(xlDown), Range("A2").End(xlDown).End(xlToRight))
    RLigne.Copy
    Le debuggeur pointe sur Set RLigne en m'indiquant "erreur de compilation variable non défini". Je n'avais pas cette erreur auparavant..

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

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