Ouvrir un fichier texte avec Excel

Signaler
Messages postés
1
Date d'inscription
vendredi 11 juillet 2008
Statut
Membre
Dernière intervention
11 juillet 2008
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 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