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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 096 fois - Téléchargée 19 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
27 avril 2011 à 09:27
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
27 avril 2011 à 09:19
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
24 août 2009 à 09:04
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
17 août 2009 à 15:21
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
9 mars 2009 à 15:38
Quel est le problème qui se pose exactement ?
Afficher les 8 commentaires

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.