Bonjour,

Je travaille sur un script qui utilise un tableau dynamiques d'objets.
Ces objets proviennent de valeurs extraites d'un fichier de configuration.

Je dois avoir 13 objets donc 13 cases dans mon tableau soit 12 comme résultat de Ubound.

Hors j'ai un indice en dehors de la plage ! .

Et je ne comprends pas pourquoi.

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
58
59
Set FileConfig = fso.OpenTextFile(ConFich,ForReading,True)
FileConfig_data = FileConfig.ReadAll
NbLignesNow = FileConfig.Line
FileConfig.Close 
arrLines = Split(FileConfig_data,vbCrLf)
 
If ( NbLignesNow <> NbLignesAvant ) Then	
	For i = 0 To UBound(arrLines)
		Set seuilOK = a.Execute(arrLines(i))
		If (seuilOK.count<>0) Then
 
			'** Création d'une nouvelle matière **
			'Augmentation du tableau
			Redim Preserve value(i) 'Un tableau dynamique doit être initialisé la première fois !
			Set value(p)=new Matiere
 
			'** Récupération du code Matière **
			tableau = Split(arrLines(i),"_")
			valeur = tableau(1)
			tableau1 = Split(valeur,"=")
			Code = tableau1(0)
			'MsgBox(Code)
			value(p).codeM=Code
 
			'** Récupération Seuil Matière Autorisé **
			tab = Split(arrLines(i),"=")
			seuilAjustement = tab(1)
			sAjust = Replace(seuilAjustement,".",",")
			seuilConf = Csng(sAjust)
			'MsgBox(seuilConf)
			value(p).seuilM= seuilConf
 
			'** Récupération de l'intitulé matière **
			tab1 = Split(arrLines(i+1),"=")
			descM = tab1(1)
			descMatiere = Replace(descM,".",",")
			value(p).descriptionM=descmatiere
 
			'** Récupération de la taille de l'unité de stock **
			tab2 = Split(arrLines(i+2),"=")
			qStd = tab2(1)
			quantiteStd = Replace(qStd,".",",")
			value(p).quantiteM=quantiteStd
 
			'** Récuperation unité de poids **
			tab3 = Split(arrLines(i+3),"=")
			unitMatiere = tab3(1)
			value(p).uniteM=unitMatiere
 
			p=p+1
		End If
	Next
	MsgBox("Rajout de lignes " & diffLignes)
	ReDim Preserve value (UBound(value) + diffLignes)
	NbLignesAvant = NbLignesNow
Else
	MsgBox("Pas de changement")
End If
MsgBox(Ubound(value))
Question :
- Mon tableau dynamique value() est-il supprimé en sortie de boucle ?
* ce que je ne souhaite pas,au passage *
- Est-il possible de maintenir les valeurs d'un tableau pour les futurs exécution ?
* c'est ma boucle If ( NbLignesNow <> NbLignesAvant ) qui doit modifiée le tableau sinon il doit rester intact. *


Des idées ?

Merci.

Miistik.