Importer un fichier texte vers feuilles Excel selon critère

Bonjour à tous:

J'ai un fichier en format .txt séparé par des espaces et signes moin (-) de cette forme:

AXFGBSE 803-08-303-34975 EDSRTGV

AXFGBSE 803-08-166-87347 SKSYFMD

AXFHCSE 803-08-303-85643 OVBDYW

KSGTFRD 803-08-92-11269 EBC01SM

HJUWEW 803-08-166-49342 DLFDLER

VBFSRTE 803-08-92-11269 DGHTVCS

Je voudrais faire l'importation comme suit:

Dans la feuille 1 il me faudrait les données (les lignes) ayant -303- et dans la feuille 2 il me faudrait les données ayant -166- et la feuille 3 il me faudrait les données ayant -92-.

comme résultat, dans la feuille 1 on aurait :

AXFGBSE 803-08-303-34975 EDSRTGV

AXFHCSE 803-08-303-85643 OVBDYW

Et dans la feuille 2 on aurait:

AXFGBSE 803-08-166-87347 SKSYFMD

HJUWEW 803-08-166-49342 DLFDLER

Et dans la feuille 3 on aurait:

KSGTFRD 803-08-92-11269 EBC01SM

VBFSRTE 803-08-92-11269 DGHTVCS

Merci de votre aide.

Bonjour tayebel

Bonne Année et


Est-ce que quelque chose comme cela conviendrait ?

PS/ j'ai supposé que le fichier texte est nommé "exemple.txt" si ce n'est pas le cas il faut le modifier dans la macro-cmde

Sub LireTexte()
Dim nomTxt As String

    nomTxt = "exemple.txt" ' <- mettre le nom correct ET complet (avec le chemin) du fichier texte ici !!!
87demo-v1.xlsm (25.76 Ko)

Bonjours,

Merci andrea73 de votre précieuse réponse.

Le résultat après l'exécution du code n'est pas concluant. Il se bloque au niveau de la ligne:

nomOnglet = Mid(quoi, posTiretDeb + 1 , posTiretFin - posTiretDeb - 1)

Et le message d'erreur est: Argument ou appel de procedure incorrect

Pour le chemin de fichier, j'ai mis: nomTxt = Application.GetOpenFilename("Text files(.txt), .txt")

Car le nom de fichier source peut changer de nom.

Merci d'avance de votre aide afin que je puisse remedier à mes erreures dans ce code.

tayebel a écrit :

Pour le chemin de fichier, j'ai mis: nomTxt = Application.GetOpenFilename("Text files(.txt), .txt")

Bonjour
tayebel a écrit :

Merci andrea73 de votre précieuse réponse.

tayebel a écrit :

Le résultat après l'exécution du code n'est pas concluant. Il se bloque au niveau de la ligne:nomOnglet = Mid(quoi, posTiretDeb + 1 , posTiretFin - posTiretDeb - 1)Et le message d'erreur est: Argument ou appel de procedure incorrect

je ne vois pas d'où peut venir cette erreur ??? peut-être avec MID$ à la place de MID à essayer...

tayebel a écrit :

Pour le chemin de fichier, j'ai mis: nomTxt = Application.GetOpenFilename("Text files(.txt), .txt")

très bonne idée

Bonjours,

Merci de votre réponse rapide.

Malheureusement le MIDS, est considéré par la compilation:

Sub ou function non définie.

(re)

Négatif pas MIDS mais MID$ soit M I D $ (dollar comme euro aux USA)

Bonjours,

De meme, le MID$ ne fonctionne pas.

Il indique la meme erreure: Argument ou appel de procedure incorrect.

Merci.

(re)

Tu es sur PC ou MAC ?

Je suis sur PC.


Bonjours,

Vous l'avez tésté chez vous et que ça fonctionne ?

(re)

of course que

tayebel a écrit :

Vous l'avez tésté chez vous et que ça fonctionne ?

je teste tjs avant

peux-tu envoyer une copie d'écran du code VBA au moment du plantage ?


(re)

ou plutôt ton fichier Excel sur lequel le plantage à lieu avec si possible une copie du fichier texte ?

en MP au besoin, si tu penses que tes données sont trop sensibles/confidentielles.

(re)

Je viens de regarder les copies d'écrans je ne vois rien de particulier sur le code... par contre il me vient une idée...

Ton fichier texte a-t-il toujours la même forme ? je veux dire la donnée à extraire (303, 166, 92) est-elle toujours encadrée de tirets (signe moins du 6) cela pourrait expliquer la chose si n'est pas le cas

Un bon moyen de vérifier... lorsque le code "plante" passe la souris sur la ligne contenant le MID (celle qui devient jaune) et constate si posTiretDeb et posTiretFin ont une valeur supérieure à zéro ! si l'une ou l'autre ou les deux sont à zéro, ça plante et c'est normal... cela veut dire que ton fichier texte n'est pas uniforme !

Bonsoir,

Oui, les données à extraire ont toujours la meme forme (encadrée de tirets (signe moins du 6),

Quant à la manoeuvre de passage de la souris sur la ligne MID j'ai :

posTiretDeb [= 0

posTiretFin = 0

nomOnglet = Vide


Je voulai dire posTiretDeb = 0

(re)

et que donne la variable "quoi" sur la même ligne (jaune) ?

Bonjours,

le paramètre quoi = "CELL CGI BSC CO RO NCS EA"

(re)

donc c'est bien ce que je disais ton fichier texte n'est pas homogène... ! dans cette ligne il n'y a pas de nombre donc il n'y a pas non plus de tiret moins !!!

La conclusion ?

Est-il juste de dire : une ligne qui ne contient pas de chiffre ne doit pas être traitée ?

Bonjours,

j'ai supprimé l’entête du fichier source et j'ai exécuté le code qui s'est arrêté cet fois sur: Set onglet = Worksheets(nomOnglet)

le message d'erreur est: l'indice n'appartient pas a la selection

encore merci

(re)

Les fichiers textes posent toujours et souvent des problèmes... la preuve !

Donc maintenant quelle la valeur de "nomOnglet" toujours en passant la souris dessus ?

Bonsoir,

désolé de répondre en retard.

le code pour l'instant transfert juste les quatre premiers enregistrements, càd les codes 303, 99, 371 et 395 puis s’arrête avec erreur sur la ligne: nomOnglet = Mid(quoi, posTiretDeb + 1, posTiretFin - posTiretDeb - 1)

Au moment du passage de la souris sur les variables j'ai:

quoi = 2

posTiretDeb = 0

posTiretFin = 0

nomOnglet = Vide

Ci-joint le fichiers: source, capture-écran-erreur et le fichier excel

Merci.

0demo-v1.xlsm (28.33 Ko)
0capture-ecran2.zip (31.80 Ko)

Bonjour tayebel,

tayebel a écrit :

désolé de répondre en retard.

pas grave

Très bonne idée le fichier TXT je vais pouvoir tester "en vrai" avec des données concrètes ! Je regarde donc et je reviens vers toi...

PS/ tu confirmes que tous les codes sont à transférer dans un onglet supposé existant ?

Bonjour tayebel

Voilà, j'ai trouvé l'erreur... certaines lignes du fichier TXT commence par un chiffre et donc c'est l'explication du "quoi = 2" que je n'arrivais pas à comprendre !

Quand je disais...

Les fichiers textes posent toujours et souvent des problèmes... la preuve !

je n'avais pas tord

Bref, théoriquement j'ai testé avec le fichier TXT que tu as envoyé et ça fonctionne.

En prime j'ai ajouté une création des onglets inexistant au cas où une "nouvelle" valeur surviendrait dans le TXT

16demo-v2.xlsm (50.13 Ko)
Rechercher des sujets similaires à "importer fichier texte feuilles critere"