Cet objet TreeView NodeCheck ne gère pas des événements comme d'autres objets, le réglage du .Checked = False
n'a pas de sens après la fin du Sous. Cependant, il existe un travail autour de l'utilisation d'une variable publique et Sub dans un module normal, et le plus important Application.OnTime
pour faire la décocher (ne déclenche pas le _NodeCheck
lorsqu'il est fait dans la macro).
Ainsi, dans votre module UserForm avec l'objet TreeView:
Private couT As Integer
Private Const MAX_NODES As Integer = 8
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim bSchUncheckNode As Boolean
bSchUncheckNode = False
If Not Node.Parent Is Nothing Then
If Node.Checked = True Then
couT = couT + 1
If couT <= MAX_NODES Then
'Debug.Print Node.Text & "_Checked !"
Else
couT = couT - 1 ' Assuming the scheduled task completes successfully (or move the variable to standard module).
bSchUncheckNode = True
iNodeToUncheck = Node.Index
End If
Else
couT = couT - 1
End If
End If
' Schedule Sub call only if it should uncheck a node
If bSchUncheckNode Then Application.OnTime Now, "UncheckNode"
End Sub
Sub UserForm_Initialize()
couT = 0 ' Resets the counter to zero
'... Other things you have had
End Sub
Dans un module de vba normal (changer le nom de l'objet UserForm et objet TreeView en conséquence):
Public iNodeToUncheck As Integer
Sub UncheckNode()
' Assuming this is only be called by the UserForm scheduling
UserForm1.TreeView1.Nodes(iNodeToUncheck).Checked = False
End Sub
-t-il se comporte la même si vous démarrez votre sub avec Application.EnableEvents = False et terminez avec Application.EnableEvents = True'? Vous devez le faire de toute façon, car votre code appelle à nouveau la même routine lorsque vous décochez la case, ce qui n'est pas souhaitable. –
@ A.S.H C'est ce que je pensais au début, mais le '_NodeCheck' de TreeView n'est pas déclenché par le code vba (je l'ai traversé). Ne sont déclenchés que via l'interface graphique, et les modifications apportées à la propriété 'Checked' de ce nœud dans le sous-système seront ignorées. – PatricK