Import d'un fichier texte dans une page d'un classeur

Signaler
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour.

Afin de traiter des données qui me sont fournies au format .txt, j'aurais besoin d'automatiser une procédure permettant :
[list]
[*] Par le click sur un optionbutton, d'ouvrir le navigateur de fichier pour récupérer un fichier texte.
[*] D'utiliser les virgules comme séparateur pour ce fichier
[*] D'importer la totalité du contenu de ce fichier au sein d'une sheet déjà existante de mon classeur de traitement.
/list

Si certains d'entre vous entrevoient une solution pas trop complexe, je serais ravi de l'entendre

En vous remerciant.

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Si ton fichier texte est au format CSV (Comma Separated Values), pas de souci : Tu n'as qu'à enregistrer une macro pendant que tu fais l'ouverture à la main, tu auras le code tout fait.
Sinon, explique ta difficulté.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
PS : Tu ne pourras pas importer dans une feuille mais dans un nouveau classeur.
Ce n'est pas grave, il te suffira d'automatiser le transfert des données de ce nouveau classeur vers ta feuille existante ensuite.
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

Justement je souhaite éviter d'avoir à ouvrir les fichiers textes à la main : j'en ai pas mal à traiter successivement.

Actuellement cela m'ouvre un nouveau classeur pour mon fichier texte importé en excel : je souhaiterais en gros récupérer les données de ce classeur pour les copier dans une feuille d'un autre classeur, puis fermer le classeur d'où j'ai récupéré ces données qui ne lme sert plus à rien.

Cela dit mon premier problème est de trouver le control qui me permettent d'ouvrir un fichier à partir de l'appui sur un option button.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Oui, c'est bien ce dont je parlais.
Une fois que tu auras le code généré par l'enregistreur de macro, il ne te restera qu'à paramétrer les saisies que tu as fait pendant l'enregistrement, par exemple l'emplacement et le nom du fichier.
Une fois importées, tu as un classeur.
Sauve-le/Donne lui un nom.
Quant à la recopie des données, là aussi l'enregistreur de macro te fournira le nécessaire.
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

Je ne pense pas que ça soit simple au point que je puisse directement passer par l'enregisterue de macro.

D'une part le fichier à importer n'a pas toujours le même nom, il faut donc que 'jouvre un controle spécifique poru récupérer ce nom de fichier (mais du coup je ne me souviens plus de quel contrôle il s'agit)

Ensuite mon fichier étant volumineux, il me sort une erreur "Trop de caractères de continuité de ligne" lorsque j'enregistre l'import de ce fichier texte au format excel.

Cela dit si tu as un exemple de bout de code pour cette procédure d'import de ton coté je prend quand même.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
"Je ne pense pas que ça soit simple au point que je puisse directement passer par l'enregisterue de macro"
Tant que tu n'auras pas essayé, tu ne peux pas en être sûr

"le fichier à importer n'a pas toujours le même nom"
Il faudra donc que ton programme propose à l'utilisateur de faire le choix de ce fichier.
Là encore, une simple recherche de "ouvrir fichier" te fournira des exemples.

"il me sort une erreur (...) lorsque j'enregistre"
Ne sachant pas quel code tu utilises, difficile de te dire pourquoi

"si tu as un exemple de bout de code"
Le site en est plein : c'est à toi de chercher; ça ne viendra pas tout cuit.