Bonjour à tous et a toutes

Une sous procédure lit un fichier et crée une ou deux listes (dictionnary)
pour afficher le contenur

Voici le code associé qui lit seulement le fichier et affiche la valeur du champs3 de chaque ligne de ce fichier

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
51
52
53
54
55
56
57
 
 
 
 Dim FSO, LeFichier
    Dim CheminNomFichier, PourTbl, TblLigne, TblColonne
           Dim T
        'Champs1 pour chaque ligne correspond au nom du poste
Dim Champs1
        Dim compteur  
        compteur = 1
 
 
 
Set fso = CreateObject("Scripting.FileSystemObject")
CheminNomFichier = "c:\Dossier\Dossier1\monfichier.txt"
Set LeFichier = fso.OpenTextFile(CheminNomFichier,1)
PourTbl = LeFichier.ReadAll
LeFichier.Close
 
 
 
 
 
       'ajout d'un retour chariot à la derniere ligne pour le Splitage
      PourTbl = PourTbl & vbclrf
    TblLigne = Split(PourTbl,vbCrLf)
 
 
    'pour obtenir le nombre de ligne
        T = Ubound(TblLigne)
 
        'dimensionne chaque variable
       redim Champs1(T)
 
       'Pour creer une liste 
       Set ObjDicoReseau = CreateObject("Scripting.Dictionary") 
 
        'Pour chaque ligne     
 
    for T =0 to ubound(TblLigne)
 
         TblLigne(T) = TblLigne(T) & ";"
        TblColonne = split(TblLigne(T),";")
 
 
       '  récupère le 3 eme champs du fichier
        Champs1(T)= TblColonne(3)
 
         ObjDicoReseau.Add T,Champs1(T) 
 
           'AFFICHE et va a la ligne
            MsgBox "Champs1(" & T & ") contient: " & Champs1(T) & vbcrlf _ 
 
           compteur = compteur + 1
 
 
        next
Ici le morceau de code ne pose pas de probleme,et m'affiche bien le champs 3 pour chaque ligne du fichier mais etant donné que je dois stocker dans un dictionnary le champs 3 de chaque ligne ,apres le next je rajoute donc ce morceau de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
'Afficher les elements du dictionnary 
' k = ObjDicoReseau.keys
' i = ObjDicoReseau.items
 
'For n = 0 To ObjDicoReseau.Count - 1 
 
' MsgBox k(n) & ", " & i(n)
 
'Next
Une fois le morceau de code ajouté des que j'essaie de l'éxécuter il m'indique une erreur:
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
 Set fso = CreateObject("Scripting.FileSystemObject")
CheminNomFichier = "c:\Dossier\Dossier1\monfichier.txt"
Set LeFichier = fso.OpenTextFile(CheminNomFichier,1)
PourTbl = LeFichier.ReadAll
LeFichier.Close
 
 
 
 
 
'ajout d'un retour chariot à la derniere ligne pour le Splitage
PourTbl = PourTbl & vbclrf
    TblLigne = Split(PourTbl,vbCrLf)
 
 
    'pour obtenir le nombre de ligne
T = Ubound(TblLigne)
 
'dimensionne chaque variable
redim Champs1(T)
 
 
 
 
 
 
 
 
'Pour creer une liste 
Set ObjDicoReseau = CreateObject("Scripting.Dictionary") 
 
'Pour chaque ligne 
for T =0 to ubound(TblLigne)
TblLigne(T) = TblLigne(T) & ";"
TblColonne = split(TblLigne(T),";")
 
 
' récupère le 3 eme champs du fichier
Champs1(T)= TblColonne(3)
 
ObjDicoReseau.Add T,Champs1(T) 
 
 
'AFFICHE et va a la ligne
MsgBox "Champs1(" & T & ") contient: " & Champs1(T) & vbcrlf _ 
 
compteur = compteur + 1
 
next

Ici le morceau de code ne pose pas de probleme,et m'affiche bien le champs 3 pour chaque ligne du fichier mais etant donné que je dois stocker dans un dictionnary le champs 3 de chaque ligne apres le next je rajoute donc ce morceau de code

(Set ObjDicoReseau = CreateObject("Scripting.Dictionary") ==>cette ligne a déja été déclaré)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
     'Afficher les elements du dictionnary 
          ' k = ObjDicoReseau.keys
         ' i = ObjDicoReseau.items
 
   'For n = 0 To ObjDicoReseau.Count - 1 
 
      ' MsgBox k(n) & ", " & i(n)
 
   'Next
Une fois le morceau de code ajouté des que j'essaie de l'éxécuter il m'indique une erreur: INDICE EN DEHORS DE LA PLAGE [NUMBER 3 ]
Ligne 70 / caract 10 ..soit la ligne suivante Champs1(T)= TblColonne(3)

Je ne comprends pas trop pourquoi j'ai une tel erreur ,vu que précedement sans le morceau de code pour afficher les dictionnary,elle n'apparaissait pas.