Importation de texte

Résolu
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013 - 21 juin 2013 à 11:55
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 - 21 juin 2013 à 18:47
Bonjour,
J'utilise Workbooks.OpenText avec les bons séparateurs quand je les connais (.csv=> ";") mais, dans le cas des fichiers .txt, je voudrais faire comme l'"Assistant d'importation de text" d'Excel. Est-il accessible par une autre méthode ?
Sinon il faut essayer de déterminer en comptant les Tab et les ";" de la première ligne (beurk), même si, comme l'Assistant, je demande à l'utilisateur de choisir, il faut bien que je lui montre les conséquences de son choix...

Quelqu'un sait-il faire ?

Merci

Marcel

11 réponses

MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
21 juin 2013 à 14:01
En somme quelque chose de ce genre :
Application.Dialogs(xlDialogImportTextFile).Show

non ?

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
3
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
21 juin 2013 à 15:44
En fait c'est l'accès direct à l'Assistant Excel que tu cherchais !
Les données sont importées selon le choix effectué dans l'assistant,
feuille active ou dans une nouvelle feuille ...

En fait je n'y connais rien, j'ai juste ouvert l'aide VBA intégrée
puis j'ai pris 10 secondes pour y effectuer une recherche !

Cette collection Dialogs n'a pas l'air paramétrable ...

Autre exemple (affichant le nom du classeur après importation) :
If Application.Dialogs(xlDialogOpen).Show Then MsgBox ActiveWorkbook.Name


___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
3
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
21 juin 2013 à 17:21
J'ai juste effectué une recherche sur le mot "dialogue" ...

Dans la liste proposée j'ai sélectionné "Dialogs, collection d'objets"
puis en bas sur "Listes d'arguments de boîte de dialogue intégrée"
puis j'ai directement fait défiler la liste jusqu'au I comme "import" …

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
3
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
21 juin 2013 à 12:20
Bonjour,
je sais faire quand c'est clair mais là je reste dans le brouillard …

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2013 à 13:04
Bonjour,
Pas clair, en effet !
Une chose est certaine : lorsque l'on utilise un fichier texte, on sait en général comment il est constitué et on agit en fonction de cette connaissance.
Une méthode "universelle" n'existe pas et n'aurait d'ailleurs aucun sens.
Quant à :
déterminer en comptant les Tab et les ";" de la première ligne (beurk)

Remplaçons donc volontiers le "beurk" par "A l'inconscient" !" (car ces "présences" ne sont pas forcément ni assurément significatives, ni même suffisamment "révélatrices" et ne sont que des "indices" de probabilité !)
Conclusion : on ne joue avec des fichiers texte (importés ou simplement à lire) que lorsque l'on en connaît la structure !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013
21 juin 2013 à 13:49
Bonjour,
Excusez-moi de ne pas avoir été clair.
Lorsque vous ouvrez, sous Excel, un fichier texte .txt, cela ouvre un "Assistant" qui vous aide à déterminer la structure du fichier : champs délimités ou de largeur fixe, et qui, dans le premier cas, vous permet d'essayer un ou plusieurs délimiteurs, dans le second, d'indiquer les largeurs des colonnes. De façon interactive, cet Assistant vous montre le résultat de vos choix sur les 5 premières lignes du fichier.

J'ai une application qui ouvre des fichiers texte, soit .csv (champs délimités par des point-virgules), soit .txt (champs délimités par des tabulations).
Je connais la structure attendue des champs, et fais une vérification (nombre et nature des champs) avant le traitement.

Par contre, à cause de l'origine variée des fichiers reçus, j'ai souvent des fichiers csv qui sont suffixés .txt.
Ça me plairait si, au lieu de Workbooks.OpenText (qui fixe le format du fichier à ouvrir), je pouvais avoir accès à ce fameux Assistant d'Excel qui fait du bon boulot. Est-il disponible ? Quelqu'un en a-t-il réalisé un clone insérable dans une application ?

Ai-je été plus clair ?

Merci

Marcel
0
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013
21 juin 2013 à 14:45
Bonjour et MERCI Marc...
Après un rapide essai, ça remplace effectivement mon GetOpenFilename et mon OpenText !!!
En fait, si je comprends bien la logique de ce dialogue, ce n'est pas une ouverture de fichier (son nom n'est pas retourné par l'appli comme par GetOpenFilename), mais un transfert de données. Il suffit que j'ouvre mon nouveau classeur et que j'insère les données sur la page en cours.
C'est ça ?

J'ai juste fait un test à part, ça a l'air fort bien
En Excel (Explorateur d'objets) n'y a aucune aide sur ce dialogue, mais comme tu as l'air de bien connaitre :

- comment récupérer le nom du classeur ouvert ?
- peut-on fixer certains paramètres (type de fichier (*.*) ,au lieu de (.txt), par exemple

Merci


Marcel
0
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013
21 juin 2013 à 16:49
Bonjour,
Tu es dur avec moi ....
Tu as eu ta réponse en 10 secondes et moi j'y suis pas arrivé ! Quelle demande as-tu faite ?
Moi, avec "Importation de texte", "ouvrir un fichier texte", "lire un fichier texte", je n'ai pas le dialogue que tu m'as fourni. J'ai eu les méthodes classiques mais pas ça ...
P.S. J'ai Office 2003

Marcel
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2013 à 16:59
Bonjour, dudoue,
C'est comme (analogie) une recherche de textes dans le Code Civil. Elle n'est fructueuse que si l'on a acquis suffisamment de notions élémentaires (pour savoir quoi chercher) et qu'on les utilise avec logique.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2013 à 17:37
Alors :
1) savoir quoi chercher :
tu as écrit :
avoir accès à ce fameux Assistant d'Excel qui fait du bon boulot. Est-il disponible ?

cela s'appelle afficher l'une des boîtes de dialogue de l'application Excel.
=>>
2) je frappe d'instinct naturel "boites de dialogues application" dans l'aide VBA et lis les rubriques. J'en vois une nommée Application.Dialogs, propriété
. Elle me "parle" ====>> je l'ouvre
3) Je vois un exemple. Celui-ci :
Application.Dialogs(xlDialogOpen).Show

Et me dis tout naturellement que si existe le paramètre xlDialogOpen, c'est que d'autres sont possibles également (sinon, aucun paramètres n'aurait été nécessaire ! - Logique, non ?).
Mais où sont-ils donc cachés, ces paramètres ?
4) puisque xlDialogOpen est l'un de ces paramètres, je suppose qu'il figure dans une liste que je pourrais tenter de découvrir en frappant :
xlDialogOpen
dans l'aide VBA ... (logique, non ?) ===>> je fais donc ===>>
5) tiens tiens ! je vois, ce faisant, une rubrique
Listes d'arguments de boîte de dialogue intégrée

M'a tout l'air d'être ce que je cherche, non ? ===>> je l'ouvre
6)Hé bé ... oui ... j'y ai tous mes paramètres possibles. Quelle chance
Je les lis tous ===>> tiens ! Il y en a un qui me "parle" : xlDialogImportTextFile
Voilà voilà ! Juste de la logique et de la raison.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
21 juin 2013 à 18:47
Au passage en 2003 une variante simple pour la boîte xlDialogOpen :
If Application.FindFile Then MsgBox ActiveWorkbook.Name


___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Rejoignez-nous