Ouvrir un fichier texte avec Excel

darthotof Messages postés 1 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 11 juillet 2008 - 11 juil. 2008 à 15:59
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 11 juil. 2008 à 21:04
Bonjour,
je cherche à ouvrir un fichier texte avec Excel en VBScript.
Ce fichier texte est une liste d'informations, sur des utilisateurs, séparées par un point virgule.
J'ai bien trouvé un bout de script avec ScriptGuy, mais je n'y comprends rien et a priori le séparateur est une tabulation (chr9).
Ca serai le début d'une réponse mais je veux automatiser la tâche,donc je ne vois pas l'interet d'ouvrir mon fichier texte et de faire un chercher-remplacer de ";" par "tab".

Est-ce qu'une bonne âme pourrait aidé le l'ignare que je suis?

Merci d'avance!!

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juil. 2008 à 16:24
Salut
Pourquoi vouloir faire du VBScript sous Excel alors que tu as déjà le VBA a ta disposition ?
En ce qui concerne l'ouverture de fichier et la lecture de données avec un séparateur quelconque :
- simplement tape "fichier texte excel" dans le moteur de recherche, il y a ce qu'il faut
- ouvre Excel, enregistre une macro pendant que tu fais l'ouverture du fichier texte en choisissant le bon séparateur et le tour est joué : Tu auras le code nécessaire dans le "Visual Basic Editeur" de ton Excel, suffira de modifier quelques paramètres, peut-être.

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
11 juil. 2008 à 21:04
 Bonsoir,

En passant par un tableau, on peut obtenir:

Option Explicit
Const ForReading = 1

Dim arrLineFicTxt
Dim strFicTxt, strFicExcel, strDelimited

strFicTxt = "D:\MyFile.txt" 
strFicExcel = "D:\MyFile.csv"
strDelimited = ";"

'Création d'un tableau contenant les lignes du fichier texte
arrLineFicTxt = FnReadFileTxt(strFicTxt)

'Création du fichier Excel
Call FnWriteExcel(arrLineFicTxt)

Function FnReadFileTxt(ArgFile)
    Dim objFso, objFile
    Dim arrLineFicTxt

    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFso.OpenTextFile(ArgFile, ForReading)
    'arrLineFicTxt est un tableau contenant toutes les lignes du .txt
    arrLineFicTxt = Filter(Split(objFile.ReadAll,vbCrLf), vbNullString)
    objFile.Close
   
    FnReadFileTxt = arrLineFicTxt
   
    Set objFile = Nothing
    Set objFso = Nothing
End Function

Function FnWriteExcel(arrLineFicTxt)
    Dim objExcel
    Dim i, j, NL, strtmp

    Set objExcel = WScript.CreateObject("Excel.Application")
    objExcel.Visible = False
    objExcel.DisplayAlerts = False
    objExcel.ScreenUpdating = False
    objExcel.Workbooks.Add

    NL = 1
    For i = 0 To UBound(arrLineFicTxt)-1
        strtmp = Split(arrLineFicTxt(i), strDelimited)
        For j = 0 To UBound(strtmp)
            objExcel.Cells(NL,j+1).Value = strtmp(j)
        Next
        NL = NL + 1
    Next

    objExcel.Columns("A:Z").Select
    objExcel.Selection.Columns.AutoFit
    objExcel.Cells(1,1).Select
    objExcel.ActiveWorkbook.SaveAs strFicExcel
    objExcel.DisplayAlerts = True
    objExcel.ScreenUpdating = True
    objExcel.Visible = True
    MsgBox strFicExcel,,"contrôle"
    objExcel.Quit
    Set objExcel = Nothing
End Function

objExcel.Cells(NL,j+1).Value peut être remplacé par une fonction pour la présentation.

jean-marc
0
Rejoignez-nous