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 :

macro pour ouvrir des fichiers TXT sur plusieurs onglets [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    physico-chimiste
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : physico-chimiste

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Points : 37
    Points
    37
    Par défaut macro pour ouvrir des fichiers TXT sur plusieurs onglets
    Bonjour,

    je ne suis pas programmeur et découvre les macros.
    J'aimerais pouvoir ouvrir à la chaîne une série de fichiers TXT ( dont les données doivent être scindées en 2 colonnes) se trouvant dans un répertoire (ici répertoire "Fluo 29-02-2016")pour les afficher sur plusieurs onglet dans le même classeur sur excel ou à défaut dans plusieurs classeurs.
    En l'absence de connaissances en VBA et après avoir fouillé sur le net, j'ai voulu essayer ça :

    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
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
    Dim chemin As String
    Dim monFichier As String
     
     
    chemin = "C:\Users\David\Fluo 29-02-2016\ "
    monFichier = Dir(chemin & "*.txt", vbNormal)
    Do While monFichier <> ""
     
    Workbooks.OpenText Filename:="C:\Users\David\Fluo 29-02-2016\monFichier", _
            Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
            Array(0, 1), Array(14, 1), Array(33, 1)), TrailingMinusNumbers:=True
    monFichier = Dir
    Loop
    End Sub
    Mais aucune action ne se passe. Pouvez-vous m'aider ?

    Merci d'avance,

    David

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    monfichier est une variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.OpenText Filename:=chemin & monfichier, ....
    Cordialement.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    physico-chimiste
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : physico-chimiste

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Merci pour cet éclaircissement, ça m'a permis de comprendre que "&" permettait de concaténer des chaines. Malheureusement ça ne fonctionne toujours pas...

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

    Avez-vous essayé de jouer l'ouverture d'un fichier manuellement avec l'enregistreur de macro ? C'est comme cela que nous faisons tous au départ.

    Avez-vous réussi à l'ouvrir et à formater les colonnes en mode largeur fixe ? Vraiment ?

    Ou plutôt en mode délimité. Dans ce cas, quel est le séparateur de champ du fichier texte ?

    Cordialement.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Voila ce que voulais dire KERGRESSE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    chemin = "C:\Users\David\Fluo 29-02-2016\ "
    monFichier = Dir(chemin & "*.txt", vbNormal)
    Do While monFichier <> ""
     
    Workbooks.OpenText Filename:=chemin & monFichier _ 
            Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
            Array(0, 1), Array(14, 1), Array(33, 1)), TrailingMinusNumbers:=True
    monFichier = Dir
    Loop
    !

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Malheureusement ça ne fonctionne toujours pas...
    Ta réponse n'est pas précise. Qu'est-ce qui ne fonctionne pas ?
    As-tu une erreur ?
    Si oui, quel numéro d'erreur, quel message d'erreur, à quelle ligne,
    En ligne 11, je lis
    chemin = "C:\Users\David\Fluo 29-02-2016\ "
    Le chemin se termine-t-il réellement pas un caractère espacé ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    physico-chimiste
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : physico-chimiste

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Philippe a trouvé la coquille. C'était effectivement l'espace (que je n'avais pas vu), à la fin du chemin de fichier, qui bloquait tout.

    Mon problème est donc résolu pour ce qui est de l'ouverture dans plusieurs classeurs. Mais éventuellement si vous avez une solution pour l'ouvrir dans plusieurs onglets sur le même classeur, je suis preneur.
    Quoiqu'il en soit merci à tous les 3, ces quelques lignes de code me simplifieront nettement la tache.

    David

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Philippe a trouvé la coquille. C'était effectivement l'espace (que je n'avais pas vu), à la fin du chemin de fichier, qui bloquait tout.
    Erreur classique lorsque l'on manipule des chaînes de caractères.
    Pour éviter ce type de problème, utiliser la fonction Trim qui supprime les caractères espacés.

    La prochaine fois, ne pas oublier de signaler l'erreur et la ligne où cela se produit. Cela limite fortement le nombre de messages dans les discussions.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    physico-chimiste
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : physico-chimiste

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Grâce à votre aide j'ai pu progresser vers le sujet de cette discussion. Donc voici une "macro pour ouvrir des fichiers TXT sur plusieurs onglets" :

    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
    Sub ImporterFichierTexteFeuille()
     
    'Importe tous les fichiers textes contenu dans un répertoire sur des feuilles différentes
     
    Dim chemin As String
    Dim monFichier As String
     
     
    chemin = "C:\Users\David\Fluo 29-02-2016\"
    monFichier = Dir(chemin & "*.TXT", vbNormal)
    Do While monFichier <> ""
     
    'Ouvre un fichier texte en le séparant en 2 colonnes ( cf taille des colonnes)
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;" & chemin & monFichier, Destination:=Range("$A$1"))
            .Name = monFichier
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlFixedWidth
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1)
            .TextFileFixedColumnWidths = Array(14, 19)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
     
     
        'Remplace les points par des virgules pour convertir les nombres en format scientifique.
    'Sans cette étape les caractères "E+0n" ne sont pas considérés commes des puissances de 10.
     
            Range("A19").Select
        Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    monFichier = Dir
    Loop
    End Sub
    Merci encore une fois à tous et bonne soirée,

    David

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

Discussions similaires

  1. Macro pour masquer des lignes vides sur plusieurs feuillés.
    Par baloote69 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 03/11/2015, 11h38
  2. Macro pour ouvrir des fichiers
    Par Youdi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/10/2015, 17h57
  3. [XL-2013] Macro pour Ouvrir 2 fichiers et maj des valeurs du 2e sur comparaison avec le 1er
    Par Audeo dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/10/2015, 19h37
  4. Macro pour ouvrir un fichier excel avec des ','
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/05/2007, 18h08
  5. Réponses: 1
    Dernier message: 15/09/2006, 16h23

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