Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMPORTATION FICHIER TEXTE DANS UNE FEUILLE EXCEL


Information sur la source

Catégorie :VBScript Niveau : Débutant Date de création : 17/02/2005 Vu : 31 855

Note :
6 / 10 - par 4 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Le présent code importe dans une feuille Excel un fichier texte
et enregistre cette feuille au même endroit que le fichier texte.

Le code est partielement commenté.
Je n'ai pas inscrit toutes les possibilités de l'import,
mais une petite recherche dans l'aide de VB d'Excel
vous éclairera sur les diférente possibilité.

J'ai conçu le code pour fonctionner en VBScript,
mais il devrait fonctionner partout.

Vous notez une amélioration, faites moi en part !
Bonne journée !
 

Source

  • Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
  • Dim waExcel: Set waExcel = CreateObject("Excel.Application") 'Ouverture d'Excel
  • StrPath = "C:\Donnees\Rapport\" 'Chemin d'accès du fichier
  • If Right(StrPath, 1) <> "\" Then StrPath = StrPath & "\" 'Ajoute \ à la fin s'il y en a pas
  • StrFich = "Igli07_aout.txt" 'Nom du fichier
  • If FSO.FileExists(StrPath & StrFich) Then 'Existance du fichier
  • waExcel.Visible = False 'Rendre invisible Excel
  • 'Importe le fichier texte vers une feuille Excel de façon Largeur fixe avec délimiteur : Tabulation et Space
  • waExcel.Workbooks.OpenText StrPath & StrFich, , , 2, , , True, , , True
  • 'Sauvegarde la feuiller importer vers le chemin d'accès de départ en motifiant l'extension et en mode partagé pour éviter des erreurs
  • waExcel.Workbooks(StrFich).SaveAs StrPath & Left(StrFich, Len(StrFich) - 4) & ".xls", , , , , , 2
  • End If
  • 'Fermeture d'Excel
  • waExcel.Application.Quit
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim waExcel: Set waExcel = CreateObject("Excel.Application") 'Ouverture d'Excel
    StrPath = "C:\Donnees\Rapport\" 'Chemin d'accès du fichier
    If Right(StrPath, 1) <> "\" Then StrPath = StrPath & "\" 'Ajoute \ à la fin s'il y en a pas
    StrFich = "Igli07_aout.txt" 'Nom du fichier
    If FSO.FileExists(StrPath & StrFich) Then 'Existance du fichier
        waExcel.Visible = False 'Rendre invisible Excel
        'Importe le fichier texte vers une feuille Excel de façon Largeur fixe avec délimiteur : Tabulation et Space
        waExcel.Workbooks.OpenText StrPath & StrFich, , , 2, , , True, , , True
        'Sauvegarde la feuiller importer vers le chemin d'accès de départ en motifiant l'extension et en mode partagé pour éviter des erreurs
        waExcel.Workbooks(StrFich).SaveAs StrPath & Left(StrFich, Len(StrFich) - 4) & ".xls", , , , , , 2
    End If
    'Fermeture d'Excel
    waExcel.Application.Quit

Commentaires et avis

signaler à un administrateur
Commentaire de phloutz le 27/10/2005 15:33:36

C'est presque ce que je cherchais, mais en bon débutant, il va falloir que je continue à potasser un peu pour l'adapter à des données séparées par un ";" et à longueur variable ;-)

signaler à un administrateur
Commentaire de gedeon44 le 03/05/2006 09:18:39

Salut,

Si tu as trouvé la méthode pour l'adapter à des données séparées par un ";", cela m'intéresse.
Tu pourrais me faire part de ta méthode, STP ?
Merci d'avance.

signaler à un administrateur
Commentaire de phloutz le 03/05/2006 09:52:40


Salut, désolé je n'ai pas encore retravaillé là-dessus...
Je me suis pour l'instant contenté d'un petit manual-processing ;-)
++

signaler à un administrateur
Commentaire de reneauld le 03/05/2006 14:24:58

Bonjour, pour importer les fichiers avec des points-virgules

waExcel.Workbooks.OpenText StrPath & StrFich, , , 2, , , ,True , , True

Dans l'aide de VBA, lorsqu'on cherche OPENTEXT

Syntaxe

expression.OpenText(Filename, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator)

expression   Obligatoire. Expression qui renvoie un objet Workbooks.

Filename   Argument de type String obligatoire. Spécifie le nom du fichier texte à ouvrir et redistribuer.

Origin   Argument de type Variant facultatif. Spécifie l'origine du fichier texte. Il peut s'agir de l'une des constantes XlPlatform suivantes : xlMacintosh, xlWindows ou xlMSDOS. Si vous ne spécifiez pas cet argument, la méthode utilise le paramètre en cours de l'option Origine du fichier de l'Assistant Importation de texte.

StartRow   Argument de type Variant facultatif. Numéro de la ligne à partir de laquelle commencer la redistribution du texte. La valeur par défaut est 1.

DataType   Argument de type Variant facultatif. Spécifie le format de colonne des données contenues dans le fichier. Il peut s'agir de l'une des constantes XlTextParsingType suivantes : xlDelimited ou xlFixedWidth. La valeur par défaut est xlDelimited.

TextQualifier   Argument de type Variant facultatif. Spécifie le qualificateur de texte. Il peut s'agir de l'une des constantes XlTextQualifier suivantes : xlTextQualifierDoubleQuote, xlTextQualifierSingleQuote ou xlTextQualifierNone. La valeur par défaut est xlTextQualifierDoubleQuote.

ConsecutiveDelimiter   Argument de type Variant facultatif. Affectez-lui la valeur True pour que des séparateurs consécutifs soient considérés comme un seul séparateur. La valeur par défaut est False.

Tab   Argument de type Variant facultatif. Affectez-lui la valeur True pour que le caractère de tabulation soit le séparateur (l'argument DataType doit avoir la valeur xlDelimited). La valeur par défaut est False.

Semicolon   Argument de type Variant facultatif. Affectez-lui la valeur True pour que le point-virgule (;) soit le séparateur (l'argument DataType doit avoir la valeur xlDelimited). La valeur par défaut est False.

Comma   Argument de type Variant facultatif. Affectez-lui la valeur True pour que la virgule soit le séparateur (l'argument DataType doit avoir la valeur xlDelimited). La valeur par défaut est False.

Space   Argument de type Variant facultatif. Affectez-lui la valeur True pour que l'espace soit le séparateur (l'argument DataType doit avoir la valeur xlDelimited). La valeur par défaut est False.

Other   Argument de type Variant facultatif. Affectez-lui la valeur True pour que le caractère spécifié par l'argument OtherChar soit le séparateur (l'argument DataType doit avoir la valeur xlDelimited). La valeur par défaut est False.

OtherChar   Argument de type Variant facultatif (obligatoire si l'argument Other a la valeur True). Spécifie le caractère séparateur lorsque l'argument Other a la valeur True. Si vous spécifiez plusieurs caractères, seul le premier de la chaîne est utilisé et les autres sont ignorés.

FieldInfo   Argument de type Variant facultatif. Tableau contenant des informations de redistribution pour les différentes colonnes de données. L'interprétation dépend de la valeur de l'argument DataType.

Quand les données sont délimitées, cet argument est un tableau composé de tableaux à deux éléments qui spécifient chacun les options de conversion pour une colonne donnée. Le premier élément correspond au numéro de colonne (commençant à 1), et le second élément est l'une des constantes xlColumnDataType répertoriées dans le tableau suivant, qui spécifient la manière dont la colonne est redistribuée.

signaler à un administrateur
Commentaire de reneauld le 03/05/2006 14:39:52

Il suffit de mettre à true le paramètre correspondant à votre séparateur Tab (tabulation), Semicolon (Points-vigule), Comma(virgule), Space (espace) ou si le sépareteur est différent
mettre true dans Other et otherChar (mettre le caractère de séparation)

signaler à un administrateur
Commentaire de gedeon44 le 03/05/2006 18:02:01

Ok, merci beaucoup pour ces explications détaillées.

Bonne soirée.

signaler à un administrateur
Commentaire de SteelModel le 03/10/2006 10:21:06

Je cherche a lire un fichier NASTRAN (.nas) ou les donnees sont groupees par blocs de 8, sans separateur. Un exemple:

GRID           9        175.0   -155.0  0.0                            
GRID          10        175.0   -155.0  3.955124                        
GRID          11        175.0   -155.0  7.910248                        
GRID          12        175.0   -155.0  11.86537                        
GRID          13        175.0   -155.0  15.8205                        
GRID          14        175.0   -155.0  19.77562                        
GRID          15        174.5596-159.17419.77695                        
GRID          16        173.2577-163.16419.77557                        
GRID          17        171.1517-166.79519.77571                        
GRID          18        168.3344-169.90619.77588

Le but -- a court terme --  est de pouvoir avoir ces donnees dans de braves colonnes Excel.
Je suis tres perplexe et j apprecierais grandement un aide eclairee. Merci d avance

signaler à un administrateur
Commentaire de pas facile le 17/10/2006 21:37:07

Penses tu qu'une solution pour Wordpad existe ...!!

Je cherche a importer un fichier de Wordpad afin d'alimenter une feuille excel avec deux delimiteurs ...

SOS est-ce possible ???!!!
Je perds espoir!!!

signaler à un administrateur
Commentaire de reneauld le 23/10/2006 19:18:17

(Traiter en fixe)
Tableau = Array(Array(0, 1), Array(10, 1), Array(15, 1))
waExcel.Workbooks.OpenText strpath & StrFich, , , 2, , , , , , , , , Tableau

Création d'un tableau à 3 colonnes
Array(Array(0, 1), Array(10, 1), Array(15, 1))
1ere colonne
Array(0, 1), = commence au caractere 0 et 1 pour type de caractere general
2e colonne
Array(10, 1), = commence au caractere 10 et 1 pour type de caractere general
3e colonne
Array(15, 1), = commence au caractere 15 et 1 pour type de caractere general

Type de carectere
xlGeneralFormat Général : 1
xlTextFormat Texte : 2
xlMDYFormat Format de date Mois-Jour-Année : 3
xlDMYFormat Format de date Jour-Mois-Année : 4
xlYMDFormat Format de date Année-Mois-Jour : 5
xlMYDFormat Format de date Mois-Année-Jour : 6
xlDYMFormat Format de date Jour-Année-Mois : 7
xlYDMFormat Format de date Année-Jour-Mois : 8
xlEMDFormat Date EMD : 9
xlSkipColumn Non distribuée : 10

signaler à un administrateur
Commentaire de reneauld le 23/10/2006 19:30:43

Pas facile
en effet comme ton pseudo l'indique, c'est pas facile...

J'aimerais avoir des précisions sur ton dit fichier wordpad.
C'est un fichier .rtf?
Ou bien c'est un fichier texte normal. Si c'est le cas, alors pas de problème à utiliser le code en exemple.

Si c'est un wordpad (.rtf), bonne chance
WordPad n'est pas conçu pour créer des fichiers de données.
C'est un outil (je suis gêné d'appeller ça un outil) destiné au formatage d'un texte.

signaler à un administrateur
Commentaire de mariuskeith le 04/06/2007 14:09:11

Salut RENAUD,au faitr je veux exporter un fichier text en excel,mais je suis un vrai débutant,j'aimerais savoir si je vais utiliser un bouton de commande ou comment.
Envoie si possiblie un exemple de programme avec interface si possible.
merci,voici mon mai:keith2fr@yahoo.fr

signaler à un administrateur
Commentaire de ketchups le 28/09/2007 10:45:33

Hello j'essaye aussi d'importer un fichier texte sauf que mon séparateur est | (alt gr +7) et je sais pas du tout comment faire pour que le code soit compatible.

(c'est des serveurs qui me créer mon fichier texte ... changé de séparateur serait ... assez compliqué)

signaler à un administrateur
Commentaire de vbuser22 le 10/07/2008 13:14:02

Bonjour à tous,

J'ai un fichier de largeur fixe à consulter via Excel, à modifier puis à enregistrer au format TXT.
Mon problème est dû au fait que ce fichier comporte des espaces consécutifs (un espace dans une zone de texte n'est lui pas supprimé) pour certaines valeurs vides.


J'ai utilisé une macro Excel qui m'a permis d'ouvrir correctement mon fichier texte (une colonne de largeur fixe par colonne Excel), à ceci près que les espaces consécutifs correspondant à des valeurs vides n'ont pas été récupérés (valeur de la colonne = '' au lieu de '       ').

Voici la macro utilisée dans Excel :

============================================================
Sub Decoupe_FixedWidth()

Const xlFixedWidth = 2
Const xlTextFormat = 2

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

objExcel.Workbooks.OpenText "C:\Test.txt", , 3, xlFixedWidth, , , , , , , , xlTextFormat, _
Array( Array(0, xlTextFormat), Array(2, xlTextFormat), Array(10, 1), Array(20, xlTextFormat), _
Array(40, xlTextFormat) )

End Sub
============================================================

Connaissez-vous la façon de conserver ces espaces ?

Merci d'avance,

signaler à un administrateur
Commentaire de chalabili le 01/06/2009 22:29:18

salut tout le monde

alors je voudrais que vous l aidiez car ce code fonctionne a merveil sur une machine et sur d'autres non il me donne l'erreur suivante :

Une exception non gérée du type 'System.Runtime.InteropServices.COMException' s'est produite dans Microsoft.VisualBasic.dll
Informations supplémentaires : Membre introuvable. (Exception de HRESULT : 0x80020003 (DISP_E_MEMBERNOTFOUND))

en pointant sur :
waExcel.Workbooks(OpenFileDialog1.SafeFileName)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.