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 d'un Fichier texte en BRUT dans une feuille Excel [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Importation d'un Fichier texte en BRUT dans une feuille Excel
    Bonjour à toutes et à tous !

    Vous vous en doutez mais j'ai un problème depuis cet après-midi (je n'ai presque plus de cheveux...).

    Je suis en train de créer une petite moulinette pour faciliter la comparaison de plusieurs données. Mon hic c'est que je n'arrive pas à importer un fichier .txt dans son état. J'ai essayé plusieurs méthodes mais sans grand succès

    J'ai dans un premier temps effectué une moulinette pour réorganiser mes données comme je le voulais. Tout fonctionnement parfaitement, sauf que j'ai bêtement importé les données "manuellement" vers Excel. Et je voudrais que ça se fasse automatiquement bien sûr.
    Donc j'ai une feuille toute simple avec une TextBox et un bouton. Dans cette dernière, on indique l'emplacement du fichier.txt (ex: C:\XXX\xxx\fichier). L'utilisateur ne doit pas s'embêter à référencer l'extension du fichier.
    Au moment de la clique sur le bouton, j'arrive à créer une nouvelle feuille MAIS ne sait toujours pas comment insérer les données du fichier.txt.

    Si vous avez des pistes son je suis très preneur ! J'espère avoir été assez clair.

    PS: j'ai déjà effectué une macro pour voir comment c'était programmé, mais impossible de le modifier pour ajouter mes variables correspondantes à la TextBox.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour,

    pas très clair et comme il y a différentes méthodes pour importer un fichier texte,
    le mieux est d'activer le Générateur de macros puis ouvrir le fichier : une base de code est livrée sur un plateau !
    Ensuite rien qu'en consultant l'aide VBA intégrée quant aux instructions utilisées par le code ainsi généré …



    __________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci tout d'abord de votre réponse,

    J'ai déjà enregistrer une macro, mais ça fait une usine à gaze ! J'avais tout de même essayé de la modifier mais impossible selon ce que je voulais obtenir.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonsoir
    un exemple du texte, un exemple du résultat on comprendra peut être mieux ton besoin
    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
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    C'est tout simple, je sais déjà traiter toutes les données du texte quand le colle ses données dans la colonne A. Je sais juste pas trop comment m'y prendre pour l'insérer automatiquement dans la colonne A.

    PJ : TEST.txt
    TEST.txt

    PS : Les données que j'utilise sont confidentielles, le .txt a donc été créé à l'instant par moi même. Il reprend à quelque détails près mes .txt

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    me basant sur ta demande
    ceci: t'ouvre le fichier texte , le coupe ligne par ligne , te met chaque ligne en colonne A
    adapte ce qui est en vert a ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ouvre_fichier_texte()
        Dim File As Object, fichier As String, fs As Object, tablo As Variant, texte_entier As String
        fichier = "C:\Users\polux\Desktop\TEST.txt"
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set File = fs.OpenTextFile(fichier, 1, True)
        texte_entier = File.Readall
        tablo = Split(texte_entier, vbCrLf)
        For i = 1 To UBound(tablo)
            sheet(1).Cells(i, 1) = tablo(i)
        Next
    End Sub
    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

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Via le Générateur de macros … Importation à partir de la cellule A1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1()
        With Feuil1.QueryTables.Add("TEXT;D:\Tests4Noob\Test .txt", Feuil1.[A1])
            .RefreshStyle = xlOverwriteCells
            .Refresh False
            .Delete
        End With
    End Sub
    __________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salut MarcL

    heu..comment dire heu...
    Nom : Capture.JPG
Affichages : 896
Taille : 42,1 Ko
    l'erreur est sur la ligne "WITH"


    je viens de le faire avec l'enregistreur et ca donne ca
    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
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Users\polux\Desktop\TEST.txt", Destination:=Range("$A$1"))
            .Name = "TEST"
            .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 = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    End Sub
    tu n'aurait pas trop simplifier le code résultant
    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

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup Patricktoulon ! Je regarde tout ça lundi.

    J'avais exactement les mêmes lignes de code que toi en exécutant une macro (horrible)...

    Je vous tiens au courant donc lundi dans la journée et mettrez mon code avec mes adaptations à la vue de tous.

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    ...
    tu n'aurait pas trop simplifier le code résultant
    Bonsoir,

    non le code de Marc est fonctionnel .. tu as juste mal copié la chaîne de Connection pour le Query.add...

  11. #11
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Oui Patrick, comme tu peux le constater dans mon post comme dans ton code généré, il y a la chaîne TEXT;

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonsoir bill et Marc
    non ca (code de MarcL) ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Feuil1.QueryTables.Add("TEXT;
    ceci oui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;......
    en tout cas chez moi
    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

  13. #13
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Aucun souci de mon côté avec les versions 2003 & 2007 …

    J'ai regardé dans la doc de la version 2013 : rien n'a pourtant changé !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  14. #14
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pour reprendre un peu ce que dit Patrick, c'est une des choses que j'ai remarquées en "sautant tout d'un coup" d'Office 2000 à Office 2010. Mon Office 2010 est très capricieux en ce qui concerne les paramètres. Je n'ai pas suffisamment testé pour l'affirmer, mais actuellement j'ai la forte impression que VB2010 (et peut-être VBA 2013) a deux "obligations" en regard des paramètres des fonctions.

    1) Quand on pilote pas automation, il fau(drai)t utiliser les paramètres entre parenthèses comme au don vieux temps, dans les "instructions de pilotage" de l'autre application.

    2) Quand on ne pilote pas par automation, il fau(drai)t utiliser les paramètres nommés.

    À moins que ce ne soit lié à Option Explicit, ou pas. (Mais là, je n'ai pas (encore) testé. Cela vient tout juste de me passer par la tête,)
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Marc-L Voir le message

    Via le Générateur de macros … Importation à partir de la cellule A1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1()
        With Feuil1.QueryTables.Add("TEXT;D:\Tests4Noob\Test .txt", Feuil1.[A1])
            .RefreshStyle = xlOverwriteCells
            .Refresh False
            .Delete
        End With
    End Sub
    __________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    Je viens de le tester, il ne marche pas avec mon Excel 2000.
    Voici l'erreur :Nom : Sans titre.JPG
Affichages : 1006
Taille : 181,5 Ko


    EDIT-1:

    J'ai essayé avec ton code Patricktoulon, j'obtiens aussi une erreur que voici :
    Nom : Sans 2.JPG
Affichages : 908
Taille : 85,1 Ko

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.QueryTables.Add ...
    pourquoi remplacer Feuil1 par Feuil2 ( tu n'as pas d'objet Feuil2 dan ton arborescence à gauche du code VBA)

    remplace le par :

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheets("Feuil2").QueryTables.Add

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Bonjour bbil !

    Je viens de faire les modifications, et ça marche impec' ! =D
    Plus qu'à l'adapter exactement à mon code. Je vous tiens informé dans la journée.

  18. #18
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Et ne pas oublier alors :



    __________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Ce n'est pas encore dit... Je suis maudit je crois. J'ai à peine touché au code, qu'il me refait une erreur : "1004"

    => Impossible de trouver le fichier texte pour l'actualisation de cette plage de données externes. Assurez vous que le texte n'a été ni déplacé ni renommé et réessayez.

    J'ai bien vérifié et j'ai rien touché... Je ne comprends plus rien

  20. #20
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Activer le Générateur de macros puis effectuer manuellement l'importation :

    en comparant le code ainsi généré, tu verras bien où se trouve ta boulette …



    __________________________________________________________________________________________________
    Heureux l'étudiant qui, comme la rivière, suis son cours sans quitter son lit …

    Copier / Coller n'est pas coder !

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Lister les fichiers d'un répertoire dans une feuille Excel
    Par AlainTech dans le forum Contribuez
    Réponses: 3
    Dernier message: 10/03/2016, 14h14
  2. [XL-2010] Import et conversion fichier texte avec séparateur dans un autre jeu de caractère
    Par Denis_67 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/03/2015, 08h17
  3. Lister les fichiers d'un répertoire dans une feuille Excel
    Par Kriss63 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/04/2011, 14h54
  4. Réponses: 5
    Dernier message: 17/04/2011, 10h52
  5. [E-03] Insérer des fichiers pdf et tif dans une feuille excel
    Par Boby71C dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/11/2008, 21h17

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