Recopier en boucle les infos dans *.txt sur Excel

Bonjour à tous,

Je suis débutant en macro sur excel, pourriez-vous m'aider à complèter ceci svp:

J'ai besoin de récupérer des informations qui sont sur plusieurs fichiers *.txt

Ces fichiers *.txt sont tous dans un même répertoire (des centaines...)

et sont tous de formes identiques (les positions des données à extraire sont identiques)

J'aimerais récupérer 9 informations dans chacun de ces fichiers *.txt (non pas l'intégralité du fichier)

Les différentes étapes que je fais pour l'instant "à la main":

Depuis le fichier excel "exemple.xls" dont je veux recopier les infos:

1- Ouvrir un fichier *.txt, avec les options de préformatage (dont le séparateur = espace)

2- Recopier les infos de chacune des 9 cellules (A-B-C-D-E-F-G-H-I) du fichier "monfichier.txt"

dans mon fichier excel "exemple.xls" sur une même ligne (voir image)"

3- Fermer le fichier *.txt une fois la copie terminée puis ouvrir le suivant

Chaque fichier *.txt est recopié sur une seule ligne, le fichier *.txt suivant sur la ligne n+1

et ainsi de suite jusqu'au dernier fichier du répertoire.

Merci beaucoup à tous.

qh3fidu

Bonjour et bienvenue sur le forum

Un essai à tester.

Ce fichier doit être dans le même dossier que tes fichiers sources.

Cela te convient-il ?

Bye !

34exemple-v1.zip (14.69 Ko)

Bonjour, en attendant une aide personnalisée ici il y a lien intéressant qui peut vous aider.

https://forum.excel-pratique.com/excel/copie-contenu-d-un-fichier-txt-sur-cellule-t21268.html

Salut gmb...

QUand tu écris :

adrOr = Choose(i, "$B$1", "$C$1", "$B$5", "$E$5", "$B$9", "$E$9", "$C$13", "$D$13", "$E$13")

les références absolues designes la feuille excel où un positionnement dans le fichier texte ?

(Je suis plus que novice dans la relation excel/fichier text donc je m'interroge finalement, comment faire référence à la troisième valeur d'une ligne par exemple...

Bonjour Force Rouge

Je vois avec plaisir que tu n'as pas délaissé le forum...

Pour répondre à ta question, il faut considérer toute la boucle :

            For i = 1 To 9
                adrOr = Choose(i, "$B$1", "$C$1", "$B$5", "$E$5", "$B$9", "$E$9", "$C$13", "$D$13", "$E$13")
                f.Cells(lgn, i).Value = Range(adrOr)
            Next i

La fonction Choose donne la valeur de l’argument i +1 (le premier argument après i)

Donc, quand i = 1, au premier tour de la boucle la variable adrOr (pour ‘’adresse dans l’Original’’) prend la valeur ‘’$B$1 ‘’

Au 2° tour, i = 2 et adrOr vaudra "$C$1" et ainsi de suite.

Et à l’instruction suivante, la cellule de destination prend la valeurde : ‘’Range(adrOr’) c’est-à-dire de

Range("$B$1") .

Et là, tu as dû comprendre…

Intéressante cette fonction Choose ? Non ?

Bye !

J'ai du mal à quitter le forum car c'est un partage de connaissance qui ne me laisse pas indifferent et gratuit qui plus est.

C'est pas la fonction choose le sujet de mon interrogation, c'est le fichier texte. Est-il possible de ne récupérer que la lettre a (dans l'exemple fourni) où peut-on spliter une ligne d'un fichier texte pour ne récupérer que l'information que l'on veut. Et si oui comment ?

(Exemple, sur la première ligne du fichier texte je ne veux récuperer que la troisième information donc dans ce cas, comment l'écrire (si c'est possible bien évidement)

hou là ! Je ne suis pas grand expert en fichier ".text"

Dans la mesure où je peux, je ruse. En le copiant et collant dans un fichier ".xls*".

Là, je suis beaucoup plus à l'aise et j'avise selon le résultat obtenu.

Bye !

Merci...j'observe et j'apprends en même temps...

Bonjour,

Votre code répond exactement à mes besoins (voir image de simulation).

v1dhcut

Cependant, je ne comprend pas d'où vient les infos dans les cases A12 "NOM FICHIER" et B12 "No FICHIER" ?

Peut-on supprimer cela ?

En testant, je me rend compte que je dois compiler les infos jour après jour, ici le code efface tout à chaque fois.

Peut-on ajouter 2 conditions avant de faire un copier/coller ?

1- vérifier si la ligne n-1 contient des infos

2- vérifier si la ligne n est "vide" (n est la ligne qu'on vient écrire)

Un très grand merci à vous !

Bonjour

fred80 a écrit :

je ne comprend pas d'où vient les infos dans les cases A12 "NOM FICHIER" et B12 "No FICHIER" ?

Je ne vois qu'une seule explication : dans ton répetoire, il y a un fichier qui contient ces indications dans les cellules A1et B1 et les autres cellules jaunes sont vides.

En testant, je me rend compte que je dois compiler les infos jour après jour, ici le code efface tout à chaque fois.

Avec cette nouvelle version, tu auras de choix d'écraser ou pas les données existantes sur ton fichier :

16classeur1.zip (19.81 Ko)

1- vérifier si la ligne n-1 contient des infos

OK j'ai modifié la façon de déterminer la première ligne entièrement vide.

2- vérifier si la ligne n est "vide" (n est la ligne qu'on vient écrire)

Et que doit faire la macro si elle est vide ? et si elle n'est pas vide ?

Bye !

Rebonjour,

Excellent votre code !

La conservation des infos est toujours "oui"

Peut-on enlever cette fenêtre superflu ?

Et merci encore.

Cordialement

fred80 a écrit :

Peut-on enlever cette fenêtre superflu ?

Voilà :

13classeur1-v2.zip (16.49 Ko)

Bye !

Rebonjour,

Le code marche à merveille ! Bravo et merci

Un autre détail : est-il possible de détecter les doublons ? (plusieurs fichier .txt identique par erreur...)

et ne pas copier ces doublons.

Le nom du fichier est unique.

Le numéro du fichier est unique aussi.

La valeur des autres champs ne sont pas unique.

Peut-on effectuer un test (sur toute la colonne "B" ou "C" ) avant de copier ?

=> si tous les fichiers testés sont des doublons alors on ne fait aucune copie.

Cordialement,

Nouvelle version :

13classeur1-v3.zip (17.37 Ko)

Bye !

Bonjour à tous,

J'ai essayé votre code en situation réelle.

Problème en série: le fichier source recopié sur un txt n'est pas toujours positionné de la même facon.

Je test une autre méthode: ouvrir le pdf directement puis copier toute la page pdf et coller sur excel.

Les infos sont toutes sur une même colonne A, il faudrait changer la technique de récupération des infos.

Sur certaines lignes, il y a plusieurs infos différentes à récupérer.

Peut-on extraire ces infos et coller dans les cellules correspondant ?

En pièce joint mon fichier de travail.

https://www.cjoint.com/c/EHbfWvUK8JR

Merci et bonne Week end.

Bonjour

Je voudrais bien essayer de t’aider mais :

• Tu ne joins aucun fichier pdf outext

• Tu écris :

On obtient les infos positionnées comme ce modele (tout ce qui est en jaune…

Sauf que tout ce qui est jaune est vide….

Dans ces condititions, ce sera difficile !

Bye !

Bonjour,

En effet, beaucoup de lignes sont vides !

Les infos à récupérer sont uniquement sur les lignes suivant:

  • ligne 12 : pour copier dans colonne C
  • ligne 35: pour copier dans colonne D
  • ligne 44: pour copier dans colonne S; T et U
  • ligne 47: pour copier dans colonne V
  • ligne 48: pour copier dans colonne H
  • ligne 49: pour copier dans colonne O
  • ligne 50: pour copier dans colonne F et G
  • ligne 51: pour copier dans colonne P

Je vous joins un fichier txt. (je n'ai pas le fichier pdf de chez moi)

Vous pouvez ouvrir le fichier txt et faire un Ctrl + A puis copier le tout sur un fichier excel temporaire ?

On obtient alors les données sur la colonne A avec 62 lignes.

https://www.cjoint.com/c/EHbkq7fJpcR

Bonne journée

Cordialement,

Bonjour

Nouvel essai, si j'ai bien compris.

15classeur1.zip (16.09 Ko)

Rebonjour,

J'ai une série de fichiers txt dans un répertoire

J'aimerais recopier les infos de ces fichiers dans mon tableau excel (comme la dernière fois)

Mais ici le problème c'est que sur certaines cellules du fichier source

il y a 2 ou 3 informations à séparer puis à copier dans 2 ou 3 cellules différentes de mon tableau excel

Je vous mets en lien les 2 fichiers: 1 fichier source en txt et le tableau excel tout pret

( avec quelques exemples et une image pour expliquer les positions de chaque information)"

https://www.cjoint.com/c/EHciF3uX6J4

https://www.cjoint.com/c/EHciHJCsbO4

exemple: 26 113.3 K 113.5 K

Ces 3 nombres sont dans une même cellule, mais je voudrais récupérer:

26 sur la colonne S de mon tableau excel

113.3 sur la colonne T de mon tableau excel

113.5 sur la colonne U de mon tableau excel

Est-ce qu'il y a une fonction qui peut faire cela ?

Merci et cordialement,

Comme ça, ça va ?

18dossier-fred.zip (118.58 Ko)

Bye !

Rechercher des sujets similaires à "recopier boucle infos txt"