Capter un range avant et après modification

pacoako

XLDnaute Occasionnel
Capter les valeurs d'un range avant et après modification

Bonjour à tous,

Je sais que le sujet a déjà été traité plusieurs fois, mais on parle toujours que la valeur d'une cellule à la fois.

Mon problème est le suivant : J'essaie de capter les valeurs d'un range avant et après en utilisant la méthode .Undo pour pouvoir ensuite le transposer dans un Treeview. Comme vous remarquerez, je set la valeur du Range avant et après.. cependant je remarque qu'étant donné que je set un range.. ma valeur avant et après est toujours la même, soit la valeur après... je croyait qu'en «Settant» un range, la variable restait fixe.. mais elle semble changer lorsque je fais le .undo.. (car les valeurs font référence aux valeurs des cellules) mes Treeview load donc toujours la même information... y-a-t'il un moyen de fixer ma variable sans qu'elle ne change (sans passer par la création d'un tableau.. car on pert toutes les notions d'areas de rows et de columns..)

Merci beaucoup pour votre aide!! & bonne journée à tous!

Voici mon code dans la feuille en question :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If F_Cal.Cells(Target.Row, Pub_ColDate) > F_Cal.Range("DatePermise") Then
    Application.EnableEvents = False
    Application.Undo
    Load UF_Mod
    Set UF_Mod.TargetBefore = Target
    UF_Mod.FillTV True, Target
    Application.Undo
    Set UF_Mod.TargetAfter = Target
    UF_Mod.FillTV False, Target
    Application.EnableEvents = True
    UF_Mod.Show
End If

End Sub


Et voici le code pertinent de mon Userform appelé UF_Mod, mes Treeview avant et après se nomme TVBefore et TVAfter

Code:
Property Set TargetBefore(ByVal Target As Range)

Set TargetBef = Target

End Property
Property Set TargetAfter(ByVal Target As Range)

Set TargetAft = Target

End Property
Public Sub FillTV(ByVal Before As Boolean, ByRef Target As Variant)

Dim MyArea As Variant
Dim z As Integer
Dim x As Integer
Dim y As Integer

Dim MyTV As TreeView
Dim NodeArea As Node
Dim NodeDate As Node
Dim NodeEmpl As Node
Dim NodeData As Node

If Before = True Then
Set MyTV = Me.TVBefore
Else
Set MyTV = Me.TVAfter
End If

Set MyTV.ImageList = IL
MyTV.Nodes.Clear
z = 1
For Each MyArea In Target.Areas
    Set NodeArea = MyTV.Nodes.Add(, , "Bloc " & z, "Bloc " & z, "Bloc")
    For x = 1 To MyArea.Rows.Count
        Set NodeDate = MyTV.Nodes.Add(NodeArea.Key, tvwChild, "Date " & z & "," & x, F_Cal.Cells(MyArea.Rows(x).Row, Pub_ColDate), "Date")
        For y = 1 To MyArea.Columns.Count
        Set NodeEmpl = MyTV.Nodes.Add(NodeDate.Key, tvwChild, "Employé " & z & "," & x & "," & y, F_Cal.Cells(Pub_RowEmpl, MyArea.Columns(y).Column), "Empl")
        Set NodeData = MyTV.Nodes.Add(NodeEmpl.Key, tvwChild, "Cellule " & z & "," & x & "," & y, MyArea.Cells(x, y).Value2, "Data")
        Next y
    Next x
z = z + 1
Next MyArea

End Sub
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
264
Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
312 479
Messages
2 088 744
Membres
103 944
dernier inscrit
Stbj