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 :

VBA Manipulation tableau a partir d'un fichier txt


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut VBA Manipulation tableau a partir d'un fichier txt
    Bonjour à tout le monde. Je suis nouveau dans ce forum et j'espère pouvoir trouver ici mes réponses pour mon petit problème.
    On me dira surement que ce sujet est déjà traité ailleurs, mais je ne trouve pas de discussion qui correspond à mon problème.

    Je souhaite lire un fichier .txt, puis ensuite distribuer différentes lignes dans des onglets individuels. Ci-joint mon fichier .txt que je veux importer. J’arrive à lire mon .txt avec ces commandes la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub get_file()
    Dim Ligne, Chemin$, nomFich As String
         Chemin = ThisWorkbook.Path
        nomFich = "\test.txt"
        Open Chemin & nomFich For Input As #1
        While Not EOF(1)
            Input #1, Ligne
        Wend
        Close #1
    End Sub
    Par contre je ne sais pas manipuler le tableau.
    Dans un premier temps je voudrai prendre toutes les lignes commençants par « CROD » et les mettre dans l’onglet « CROD », idem pour « GRID » et plusieurs mot clés s’il il le faut. La difficulté est d’imposer 8 caractères par colonnes. C’est le seul « séparateur » que j’ai. C’est ce paramètre que je ne trouve pas dans d’autres problèmes.

    Dans un second temps il peut arriver que je nécessite 2 voir X lignes qui vont ensemble (voir deuxième partie du .txt). Une idée pour boucler tout ca ?

    Le .txt est un exemple, le fichier de base est très lourd, c'est pour cela que je ne veut pas importer la totalité du fichier et faire le tri apres. Un tableau VBA me semble alors plus adapté.

    Merci d’avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Je commencerais par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub get_file()
    Dim Ligne, Chemin$, nomFich As String
         Chemin = "C:\Users\client\Downloads"
        nomFich = "\test.txt"
     Set wb = Workbooks.Open(Chemin & nomFich, True)
     
    End Sub

  3. #3
    Expert éminent
    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
    Par défaut


    Bonjour,

    vu l'ahurissante conception du fichier texte source, évidemment s'il y a la possibilité d'en
    créer un « propre » avec un délimiteur et les informations regroupées en une seule ligne.

    Sinon, joindre un classeur xlsx (sans code) contenant des feuilles résultat correspondant
    exactement au résultat souhaité d'après le fichier texte source joint initialement …

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut
    Le fichier .txt est un fichier que me sort un logiciel. Il parait bordélique mais il suffit de créer une nouvelle colonne tout les 8 caractères. Il y'a quand même une logique dans ce fichier.
    Le faire manuellement est pas difficile, mais mon vrai fichier de source est trop énorme pour l'importer dans sa globalité. La macro permettra rapidement de prendre les infos souhaités et les trier en même temps.

  5. #5
    Expert éminent
    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
    Par défaut





    Dans le menu Données, utiliser Importer à partir d'un fichier puis bien paramétrer son assistant,
    aucune difficulté pour séparer les colonnes tous les huit caractères …



    _____________________________________________________________________________________________________
    L'effort fait les forts …

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut
    C'est exactement ce que je veux faire mais en macro avec tableau vba et non en manipulant les cellules. Mon fichier exemple est très simple, le vrai fichier est énorme.
    Ci joint le résultat que je voudrais obtenir.
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent
    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
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Dans le menu Données, utiliser Importer à partir d'un fichier puis bien paramétrer son assistant,
    aucune difficulté pour séparer les colonnes tous les huit caractères …
    En activant le Générateur de macro avant d'effectuer cette manipulation, le code est livré sur un plateau ‼

  8. #8
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par Freshanet Voir le message
    Le fichier .txt est un fichier que me sort un logiciel. Il parait bordélique mais il suffit de créer une nouvelle colonne tout les 8 caractères
    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
    Sub get_file()
    Dim Ligne, Chemin$, NomFich As String
         Chemin = "C:\Users\client\Downloads"
        NomFich = "\test.txt"
        Open Chemin & NomFich For Input As #1
        While Not EOF(1)
            Input #1, Ligne
            lig = lig + 1
            a = Ligne
            col = 0
            While a <> ""
             col = col + 1
             Cells(lig, col) = Mid(a, 1, 8)
             a = Mid(a, 9)
            Wend
     
        Wend
        Close #1
    End Sub

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut
    Merci tout le monde pour vos messages rapides. Je vais pouvoir m'en sortir avec ça.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/05/2010, 12h06
  2. Réponses: 5
    Dernier message: 24/02/2009, 09h05
  3. initialisation d'un tableau a partir d'un fichier texte
    Par infofree dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 14/04/2008, 21h17
  4. Réponses: 10
    Dernier message: 08/06/2006, 08h57
  5. Réponses: 11
    Dernier message: 04/08/2003, 15h30

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