utilisation des dictionnary
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:
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:
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:
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:
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.