Bonjour,

Je travaille sur Visual Studio 2015 en vb.net.

J'ai créé une classe (extrait ci-dessous)
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
 
Public Class Po_
    'PO
    Public _Num As Integer 'Numéro de PO
    Public _ComposantsScanned As List(Of Composant_)
    Public _ComposantsScannedCumul As List(Of Composant_)
 
    Public Property ComposantsScanned() As List(Of Composant_)
        Get
            Return _ComposantsScanned
        End Get
        Set(ByVal value As List(Of Composant_))
            _ComposantsScanned = value
        End Set
    End Property
 
 
    Public Property ComposantsScannedCumul() As List(Of Composant_)
        Get
            Return _ComposantsScannedCumul
        End Get
        Set(ByVal value As List(Of Composant_))
            _ComposantsScannedCumul = value
        End Set
    End Property
End Class
La liste ComposantsScanned est la liste complète et ComposantsScannedCumul est la liste où certains composants identiques sont cumulés (j'additionne la variable CartonsNb du composant déjà existant et je n'ajoute pas le 2ème composant)
Il y a donc deux objets qui sont des listes d'un autre objet composant extrait ci-dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Public Class Composant_
    Public _Code As String ' Code 
    Public _CartonsNb As Integer 'Quantité de cartons pour un composant
 
    Public Property CartonsNb() As Integer
        'Propriété Nombre de cartons pour un composant
        Get
            Return _CartonsNb
        End Get
        Set(ByVal value As Integer)
            _CartonsNb = value
        End Set
    End Property
Quand je boucle sur la liste ComposantsScanned pour alimenter l'autre liste ComposantsScannedCumul, ma liste ComposantsScanned est modifiée alors que je ne modifie que la liste ComposantsScannedCumul

Extrait de la boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
For Each Comp In PO.ComposantsScanned
            'On boucle sur la ligne des composantsScanned
            comp_i = ComposantsListe_Recherche(PO.ComposantsScannedCumul, Comp.Code, Comp.LotKarvinaNum)
            If comp_i <> CodePasTrouve Then
                'On a trouvé le composant
                PO.ComposantsScannedCumul(comp_i).ComposantNb = PO.ComposantsScannedCumul(comp_i).ComposantNb + Comp.ComposantNb
                PO.ComposantsScannedCumul(comp_i).CartonsNb = PO.ComposantsScannedCumul(comp_i).CartonsNb + Comp.CartonsNb
            Else
                'On n'a pas trouvé le composant
                PO.ComposantsScannedCumul.Add(Comp)
            End If
Concrètement quand je fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
PO.ComposantsScannedCumul(comp_i).CartonsNb = PO.ComposantsScannedCumul(comp_i).CartonsNb + Comp.CartonsNb
Et bien PO.ComposantsScanned(comp_i).CartonsNb prend la même valeur que PO.ComposantsScannedCumul(comp_i).CartonsNb
Quelqu'un peut m'aider ???? c'est forcément urgent

Merci d'avance