Bonjour,

Voici, j'ai créée une collection, je veux que mon programme me retourne tous les éléments de ma collection.

Le problème est qu'il me retourne toujours le même item 7 fois si j'ai 7 éléments dans ma collection.

Voici ma classe créer dans une module de classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Public noFab As String
Public idXfo As String
Voici ma collection, créer dans un module de classe
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
 
Option Explicit
 
Private colFabriques As New Collection
 
Public Function add(cFabrique As clsFabrique)
 
    colFabriques.add cFabrique, cFabrique.idXfo
 
End Function
 
Public Property Get Count() As Long
 
    Count = colFabriques.Count
 
End Property
 
Public Property Get Items() As Collection
 
    Set Items = colFabriques
End Property
 
Public Property Get item(vItem As Variant) As clsFabrique
 
    Set item = colFabriques(vItem)
End Property
Voici mon module application,
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
 
Dim cFabriques As New clsFabriques
Dim cFabrique As New clsFabrique
 
 
'ajoute des éléments dans ma collection dans un sub Rapport
If CLng(varDonnees.Fields("std-cost-total")) = COUT_ZERO Then
                cFabrique.idXfo = rsDonnees.Fields("id_xfo")
                cFabrique.noFab = rsDonnees.Fields("xfo_fab")
                cFabriques.add cFabrique
End If
 
Écrire les éléments de ma collection dans un autre Sub
Sub ListeFabZero()
 
    'Dim cFabriques As New clsFabriques
    Dim I, J As Integer
    Dim ws As Worksheet
 
    Application.DisplayAlerts = True
    Sheets.add(After:=Worksheets(FEUILLE_APPLICATION)).Name = FEUILLE_FABRIQUE
    Sheets(FEUILLE_APPLICATION).Select
 
    Set ws = Application.ActiveWorkbook.Worksheets(FEUILLE_FABRIQUE)
    ws.Range("A1").Value = FEUILLE_FABRIQUE
 
    I = 2    
     For Each cFabrique In cFabriques.Items
             ws.Range("A" & I).Value = cFabrique.idXfo
              I = I + 1
     Next cFabrique
 
      MsgBox "Le cout de certains fabriqués sont à zéro", vbOKOnly
End Sub
Merci de votre aide