Salut

Suite à cette discussion Lecture d'un fichier Texte et d'autres du même sujet.

J'ai regroupé dans une même fonction le choix de récupération du fichier complet, 1 ligne, plusieurs lignes ou plusieurs lignes à rebours.
Le code du fichier que j'ai nommé FichierRecup.vbs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Function LectureFichier(CheminNomFichier, QuelNumeroDebut, QuelNumeroFin, Statut)
    Const ForReading = 1
    Dim objFSO
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Statut = 0
    If Not objFSO.FileExists(CheminNomFichier) Then LectureFichier = "Fichier introuvable": Statut = 1: Set objFSO = Nothing: Exit Function
 
    If QuelNumeroDebut = 0 And QuelNumeroFin = 0 Then 'fichier complet
        LectureFichier = objFSO.OpenTextFile(CheminNomFichier, ForReading).ReadAll
        LectureFichier = "Erreur lecture fichier": Statut = 5: Set objFSO = Nothing: Exit Function
    End If
 
    If QuelNumeroFin = QuelNumeroDebut Then 'Récupération 1 ligne
        On Error Resume Next
        LectureFichier = Split(objFSO.OpenTextFile(CheminNomFichier, ForReading).ReadAll, vbNewLine)(QuelNumeroDebut - 1)
        If Err Then LectureFichier = "Le numéro de ligne dépasse la fin du fichier": Statut = 4: Set objFSO = Nothing: Exit Function
    End If
 
    'Récupération de plusieurs lignes
    Dim TblLignes, T, PaS
    TblLignes = Split(objFSO.OpenTextFile(CheminNomFichier, ForReading).ReadAll, vbNewLine)
    If QuelNumeroDebut < QuelNumeroFin Then 'dans l 'ordre ABC.....
        PaS = 1: If UBound(TblLignes) < QuelNumeroFin Then QuelNumeroFin = UBound(TblLignes) + 1: Statut = 2
        Else                                'dans l'ordre CBA....
        PaS = -1: If UBound(TblLignes) < QuelNumeroDebut Then QuelNumeroDebut = UBound(TblLignes) + 1: Statut = 3
    End If
    If UBound(TblLignes) < QuelNumeroDebut And UBound(TblLignes) < QuelNumeroFin Then
        LectureFichier = "les numéros de ligne dépassent la fin du fichier": Statut = 4
        Set objFSO = Nothing: Set TblLignes = Nothing: Exit Function
    End If
    For T = QuelNumeroDebut - 1 To QuelNumeroFin - 1 Step PaS
        If T <> QuelNumeroDebut - 1 Then LectureFichier = LectureFichier & vbNewLine
        LectureFichier = LectureFichier & TblLignes(T)
    Next
    Set TblLignes = Nothing: Set objFSO = Nothing
End Function
'Appel de la fonction
 Dim ChemNomFich, StrRecup, RetourStatut
 ChemNomFich = "C:\PersoFrancis\En VBScript et HTA\Lire fichier Mutiple acces\FichierRecup.vbs"
 
'StrRecup = LectureFichier(ChemNomFich, 0, 0, RetourStatut) 'Le fichier complet
StrRecup = LectureFichier(ChemNomFich, 37, 0, RetourStatut) ' 1 ligne
'             ou pour même resultat
'StrRecup = LectureFichier(ChemNomFich, 37, 37, RetourStatut) ' 1 ligne
'StrRecup = LectureFichier(ChemNomFich, 31, 33, RetourStatut) 'plusieurs lignes ordre ABC.....
'StrRecup = LectureFichier(ChemNomFich, 44, 55, RetourStatut) 'plusieurs lignes ordre ABC..... dépassement fin du fichier
'StrRecup = LectureFichier(ChemNomFich, 37, 35, RetourStatut) 'plusieurs lignes ordre BCA.....
'StrRecup = LectureFichier(ChemNomFich, 55, 44, RetourStatut) 'plusieurs lignes ordre BCA..... dépassement fin du fichier
'StrRecup = LectureFichier(ChemNomFich, 55, 57, RetourStatut) 'plusieurs lignes les 2 numéro ligne dépasse la fin du fichier
MsgBox StrRecup & vbNewLine, vbInformation, RetourStatut
Pour faire fonctionner ce code, modifiez la ligne 39 avec le chemin et nom du fichier code que vous aurez sauvegardé.

La ligne 41 permet de récupérer tout le contenu du fichier mais ..... la boite de dialogue MsgBox sera sans doute pour vous aussi trop petite pour tout afficher.

La variable RetourStatut permet de gérer les erreurs éventuelles
Valeurs possibles:
0 RAS
1 le fichier est introuvable
2 le numero fin de plage depace le nombre de ligne du fichier (ordre de retour ABC)
3 le numero fin de plage depace le nombre de ligne du fichier (ordre de retour CBA)
4 le numero debut et fin de plage depace le nombre de ligne du fichier (ordre de retour ABC ou CBA)
5 erreur lecture d'une ligne du fichier, numero de ligne depacant le nombre de ligne du fichier

Pour vos essais, il vous suffit de REMER/DEREMER une des lignes 41 à 49.