Vbscript --> conversion de fichier texte en fichier excel par ligne de commande

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 650 fois - Téléchargée 17 fois

Contenu du snippet

Ce script, lancé en ligne de commande dos, permet de convertir un fichier texte en fichier excel.

Le code est à copier coller dans notepad, et à enregistrer sous genExcel.vbs, il est ensuite exécutable en ligne de commande sous Windows

Le code est suffisamment documenté pour vous permettre de voir les options disponibles

Source / Exemple :


'Script de génération de fichier Excel à partir d'un fichier texte ou CSV
'Yves LAURENT - juin 2008
'______________________________________________________________________________________
'
'Usage : genExcel -s chemin_nom_fichier_texte -d chemin_nom_fichier_excel 
' -a (ajustement auto des colonnes)
'______________________________________________________________________________________
'
'Structuration du fichier texte :
'- Séparateur : ";"
'- GR!| avant l'information : "Gras"
'- IT!| avant l'information : "Italique"
'- TI!| avant l'information : Titre
'______________________________________________________________________________________

' Récupération des infos

dim Options, Numopt
dim chemtxt, chemexcel
dim fso, objExcel, objBook, objSheet, ligne, Ftxt, Cptli, Tabli

Set Options = wscript.Arguments
numopt=0

while numopt< Options.count
	Select Case LCase(Options(numopt))
		Case "-s":
			numopt=numopt+1
			chemtxt=Options(numopt)
		Case "-d":
			numopt=numopt+1
			chemexcel=Options(numopt)
		Case "-?":
			call usage
		Case Else:
			call usage
	End Select
	numopt=numopt+1
wend

' Création de l'objet excel

Set objExcel = CreateObject("Excel.Application")
Set objBook = objExcel.Workbooks.Add
Set objSheet = objBook.WorkSheets.Add
Cptli=1

Set fso= CreateObject("Scripting.FileSystemObject")
if chemtxt<>"" then
	Set Ftxt = fso.OpenTextFile(chemtxt)
	Do While Ftxt.AtEndOfStream<>true
		ligne=Ftxt.ReadLine
		Tabli=split(ligne,";")
		For icpt=0 to ubound(Tabli)
			Select Case Left(Tabli(icpt), 3)
				Case "GR!":
					objSheet.Cells(Cptli, icpt+1).Value = Right(Tabli(icpt), len(Tabli(icpt))-3)
					objSheet.Cells(Cptli, icpt+1).Font.Bold = true
				Case "IT!":
					objSheet.Cells(Cptli, icpt+1).Value = Right(Tabli(icpt), len(Tabli(icpt))-3)
					objSheet.Cells(Cptli, icpt+1).Font.Italic = true
				Case "TI!":
					objSheet.Cells(Cptli, icpt+1).Value = Right(Tabli(icpt), len(Tabli(icpt))-3)
					'objSheet.Cells(Cptli, icpt+1).Font.Size = "11"
					objSheet.Cells(Cptli, icpt+1).Font.Bold = true
					objSheet.Cells(Cptli, icpt+1).Font.Color = RGB(0, 0, 255)
				Case Else:
					objSheet.Cells(Cptli, icpt+1).Value = Tabli(icpt)
			End Select
		Next
		Cptli=Cptli+1
	Loop
End if
objSheet.Columns.Autofit

objBook.SaveAs chemexcel
objBook.Close 'Fermeture du classeur Excel
objExcel.Quit 'Fermeture de l'application Excel
'Désallocation mémoire
Set objSheet = Nothing
Set objBook = Nothing
Set objExcel = Nothing

Sub Usage
	MsgBox  _
	"genExcel -s chemin_nom_fichier_texte -d chemin_nom_fichier_excel"&VBCRLF& _
	"             -s chemin_nom_fichier_texte : chemin et nom du fichier source"&VBCRLF& _
	"             -d chemin_nom_fichier_excel : chemin et nom du fichier excel de destination"&VBCRLF& _
	"             GR! devant un champ : champ en gras"&VBCRLF& _
	"             IT! devant un champ : champ en italique"&VBCRLF& _
	"             TI! devant un champ : Titre en gras et bleu"&VBCRLF& _
	"             -? Aide",vbInformation,"Usage"
	WScript.Quit (1)
End Sub

A voir également

Ajouter un commentaire

Commentaires

Laymante
Messages postés
2
Date d'inscription
mardi 17 février 2009
Statut
Membre
Dernière intervention
27 avril 2011
-
Autant pour moi : il ne faut pas utiliser -a ni -? pour générer le fichier xls, et ce dernier est étrangement créé dans Mes Documents.

Réactualisation futile de cette page donc. Mais merci pour le code.
Laymante
Messages postés
2
Date d'inscription
mardi 17 février 2009
Statut
Membre
Dernière intervention
27 avril 2011
-
Bonjour,
ce code est exactement ce que je recherche mais quand j'exécute le fichier à partir de l'invite de commandes, soit cela me l'ouvre quand je tape "genExcel -s fichier.txt -d fichier.xls -a", soit cela n'exécute que Usage quand je tape "cscript genExcel.vbs -s ... -d ... -a".
NEED HELP POR FAVOR.
thorspark
Messages postés
15
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
24 août 2009
-
il faudrait plus de précisions, je ne peux pas deviner comme ça d'où vient le problème.

Quel est le fichier texte d'entrée ?
JeanBin
Messages postés
1
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009
-
Bonjour,

Quand j'utilise le script ci-dessus, j'obtiens un fichier Excel avec seulement 3 caractères "ÿþD" dans la cellule A1 dans la feuille 4.

Merci pour votre aide.
thorspark
Messages postés
15
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
24 août 2009
-
Quel est le problème qui se pose exactement ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.