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 :

importation du fichier texte vers excel à l'aide de VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut importation du fichier texte vers excel à l'aide de VBA
    Bonjour,
    je suis stagiaire ingénieure je créer une application dont la première étape est d'importer les fichier texte(bloc note) dans un dossier dans classeur excel et séparer les différentes mots dans chaque colonnes (les mots sont séparés par des points-virgules dans fichier text) , le problème qui se pose que le fichier texte est variable et le dossier est variable.Merci pour votre aide

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour !

    Alors, si j'ai bien compris tu gères deux choses : un fichier .txt, qui contient les titres des colonnes de ton fichier excel, séparés par des points-virgules, et le fichier excel en question. Tu souhaiterais donc créer une macro VBA qui importe ce fichier txt et place les mots dans les bonnes colonnes.

    Ce qui sera variable c'est le contenu du fichier txt c'est bien ça ? Si les deux fichiers sont variables, alors ce que je préconise c'est que l'utilisateur de ta macro ( ton fichier excel ) puisse renseigner sur le fichier excel le chemin d'accès aux différents fichiers via un simple hyperlien ( clique droit sur la cellule, Hyperlien -> etc ). De cette façon tu auras dans ta macro accès aux fichiers et tu pourras les manipuler.

    Concernant le code pur je vois le problème en plusieurs étapes :

    1) lecture des fichiers concernés par exemple s'il s'agit d'un doc word :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
     
      Set WordApp = CreateObject("Word.Application")
      WordApp.Visible = True
      Set WordDoc = WordApp.Documents.Open("D:\Fichier_Texte.txt", ReadOnly:=True)
    Ici à la place du nom en dur tu peux mettre Range de la cellule contenant l'adresse du fichier

    2) a) Un code qui parcourt tout le fichier et cherche tous les points-virgules. Dès qu'il en trouve un il copie tout ce qu'il y a avant et tu mettrais un flag ou compteur pour qu'il ne prenne que ce qu'il y a entre deux points-virgules

    b) Dans la même boucle, tu ouvres ton fichier excel et place tes mots récupérés dans tes colonnes avec un " Offset" pour passer à la suivante



    J'espère avoir éte clair, n'hésite pas à préciser ta pensée et donner des exemples

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Non non Julien S, il y a mieux

    Tu as sur excel (onglet données externes > à partir du texte...)

    Tu lances l'enregistreur de macro, tu auras un code (non optimisé) mais qui peut être le début d'une amélioration
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Si les fichiers txt sont dans des classeurs différents je te propose le code ci-dessous :

    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
    Sub Macro1()
    Dim CL As Workbook 'déclare la variable CL (Classeur)
    Dim O As Worksheet 'déclare la variable O (Onglet)
     
    With Application.FileDialog(msoFileDialogFilePicker) 'prend en compte la boîte de dialogue "Ouvrir"
        .Show 'affiche la boîte
        On Error Resume Next 'gestion des erreurs (en cas d'erreur passe a la ligne suivante
        Workbooks.Open (.SelectedItems(1)) 'ouvre le fichier sélectionné
        If Err <> 0 Then Exit Sub 'si une erreur est générée, sort de la procédure
    End With
    On Error GoTo 0 'annule la gestion des erreurs
    Set CL = ActiveWorkbook 'définit le classeur CL
    Set O = ActiveSheet 'définit l'onglet O
    'convertion des données avec séparation en colonne a chaque point-virgule (;)
    O.Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    O.Range("A1").Select 'sélectionne la cellule A1
    CL.Save 'sauve le fichier
    'ou CL.Close SaveChanges:=True'ferme le fichier en enregistrant les modifications
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci Julien S , le but de faire une application et le premier but est d'importer un dossier qui contient des fichiers texte dans bloc note dans un fichier excel et mettre chaque fichier txt dans une feuille excel donc ,fichier texte 1 dans feuille 1 et fichier excel 2 dans feuille excel 2 ... et dans chaque fichier on va mettre les mots séparer par un point virgule dans chaque colonne et tout cela VB sous excel .

    Merci mercatog ,j'ai déjà essayer votre méthode mais le nom du fichier est spécifié dans le code,par contre je veux qu'il importe n'importe qu'il fichier sans préciser le nom.

    Merci Thautheme, votre programme m'as aidé pour l'excution de ma tâche mais il reste le problème du point virgule il n'est pas actif parce qu'il m'importe tout le fichier dans une colonne sans séparer les mots

    MERCI

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    La proposition faite fait la séparation des données en plusieurs colonnes si ces dernières sont dans la colonne A. Sinon il faut adapter le code en remplaçant A:A et A1 de la ligne 15 du code par la bonne colonne et la bonne cellule...
    Je me demande parfois à quoi ça sert de commenter le code ?!...
    À plus,

    Thauthème

    Je suis Charlie

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Citation Envoyé par ghita lay Voir le message
    Merci mercatog ,j'ai déjà essayer votre méthode mais le nom du fichier est spécifié dans le code,par contre je veux qu'il importe n'importe qu'il fichier sans préciser le nom.
    Ghita, Getopenfilename permet à l'utilisateur de choisir le fichier à importer

    Exemple adapté à partir de l'enregistreur de macro et qui permet d'importer les données d'un fichier texte choisi par l'utilisateur et d'insérer les données dans Feuil1
    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 ImportTxt()
    Dim FichierTxt
     
    FichierTxt = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If FichierTxt <> False Then
        With Worksheets("Feuil1")
            .UsedRange.ClearContents
            With .QueryTables.Add(Connection:="TEXT;" & FichierTxt & "", Destination:=.Range("A1"))
                .TextFileSemicolonDelimiter = True
                .Refresh BackgroundQuery:=False
                .Delete
            End With
        End With
    End If
    End Sub
    Maintenant si tu désire importer par exemple tous les fichiers d'un dossier ou un ensemble de fichiers, la logique diffère peu
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. importation d'un fichier texte vers excel
    Par jnthnroy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/01/2012, 17h31
  2. [Toutes versions] Import&Mise en forme Fichier texte vers excel
    Par roadmender dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2009, 14h45
  3. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  4. Importation de fichier Access vers EXCEL en VB
    Par yoruichi93 dans le forum IHM
    Réponses: 1
    Dernier message: 12/06/2006, 19h53
  5. importation d'un fichier texte vers excel
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2005, 11h47

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