Treeview Macro qui recommence

6 réponses
Avatar
Roland Miller
Bonjour,

J'ai un souci =E2=80=A6 depuis un bon bout de temps.

Lorsque du code est ex=C3=A9cut=C3=A9 =E2=80=A6 rendu =C3=A0 une =C3=A9tape=
le code recommence et je cherche =C3=A0 =C3=A9viter ceci. En esp=C3=A9rant=
que c'est assez clair comme intro.

J'ai un treeview aliment=C3=A9 par une feuille Excel. Dans la macro je met =
=C3=A0 jour des plages de cellules dans la feuille qui alimente le treeview=
. Mais lorsque le code ci-dessous s'ex=C3=A9cute =E2=80=A6 c'est comme si l=
e treeview est sollicit=C3=A9 ou comme s'il s'ouvrait alors qu'il ne l'est =
pas =E2=80=A6 et qu'alors la macro recommence.=20

En fait ce code =E2=80=A6 quelque soit la ligne lance Sub Pro_TREEVIEWINITI=
ALUPDATE().

Existe t'il une fa=C3=A7on de rendre le Treeview genre "dormant" un peu com=
une enableevents =3D false durant l'ex=C3=A9cution de code?

Los de l'ex=C3=A9cution de ce code le EnableEvents est =C3=A0 False.

Merci =C3=A0 l'avance.

'**********************************************************************

UF_Treeview.ListBox1.RowSource =3D "Var_ListFile"
UF_Treeview.TextBox6.Text =3D "Liste de tous les documents externes dans le=
dossier"

6 réponses

Avatar
MichD
Le 17/02/20 à 18:30, Roland Miller a écrit :
UF_Treeview.ListBox1.RowSource = "Var_ListFile"
UF_Treeview.TextBox6.Text = "Liste de tous les documents externes dans le dossier"

Bonjour,
A )
UF_Treeview.ListBox1.RowSource = "Var_ListFile"
Il faut éviter d'utiliser la propriété "RowSource" pour remplir les
contrôles d'un formulaire, utilise plutôt quelque chose comme ceci :
With UF_Treeview.ListBox1
'pour 2 colonnes de données
.ColumnCount = 2
'La largeur de chacune des colonnes
.ColumnWidths = "20;25"
'Le contenu du listbox
'En supposant que "Var_ListFile"
'est une plage nommée de cellules
.List = Range("A1:B10").Value
End With
B ) UF_Treeview.TextBox6.Text = "Liste de tous les documents externes
dans le dossier"
Cela dépend dans quelle procédure événementielle du formulaire, tu as
inscrit cette ligne de code. Par elle-même, prise toute seule, je n'ai
rien à dire sur ce sujet.
MichD
Avatar
Roland Miller
Plus précisément … ça lance Private Sub UserForm_Ini tialize().
Avatar
MichD
Le 17/02/20 à 19:04, Roland Miller a écrit :
Plus précisément … ça lance Private Sub UserForm_Initialize().

Quel est le nom de la procédure qui exécute le nom de cette ligne de code :
UF_Treeview.TextBox6.Text = "Liste de tous les documents externes dans
le dossier".
Est-ce que tu as dans ce formulaire, des procédures événementielles
comme Private Sub TextBox1_Change() par exemple...lorsque le contenu du
textgbox1 est modifié peu importe la procédure, cela appelle la
procédure "Sub TextBox1_Change()" et il faut alors voir ce qu'il y a
comme code dans cette procédure.
Dans rien voir, je ne peux pas deviner ce qui se passe.
MichD
Avatar
Roland Miller
Effectivement … j'ai regardé et ça appelle Private Sub Li stBox1_Click().
À ce moment dans le ListBox il y a une liste de nom de documents. Et q uand on clique dans le ListBox … selon le document … ç a "enabled" ou "disabled" des boutons et ça met à jour des infos dans une feuille Excel.
Mais alors … concernant "peu importe la procédure, cela appell e la procédure "Sub TextBox1_Change()" … il n'y a aucun moyen de ne pas appeler l'évènement? Comme un EnableEvents = False? J 'ai essayé et ça passe par dessus.
Avatar
MichD
| EnableEvents
Ceci n'est applicable qu'aux procédures événementielles du classeur et
n'a aucun impact sur les événements du formulaire.
| il n'y a aucun moyen de ne pas appeler l'évènement?
**** Cela est possible en utilisant une variable dans le haut du formulaire.
Dim Toto As Boolean
Dans la procédure qui appelle ceci : Sub ListBox1_Click(), tu donnes à
la variable la valeur toto = True et dans la procédure "Click" tu fais
le test suivant : if toto = true then exit sub.
Il ne faut pas oublier de remettre dans ton code la valeur Toto = False
pour que tu puisses avoir accès à la procédure "clic" au moment désiré.
C'est le principe que tu peux appliquer au besoin.
MichD
Avatar
Roland Miller
Merci … encore … infiniment. J'apprécie énormément.