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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
Roland Miller
Plus précisément … ça lance Private Sub UserForm_Ini tialize().
Plus précisément … ça lance Private Sub UserForm_Ini tialize().
Plus précisément … ça lance Private Sub UserForm_Ini tialize().
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
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.
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
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.
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.
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.
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
| 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.
| 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
Roland Miller
Merci … encore … infiniment. J'apprécie énormément.
Merci … encore … infiniment. J'apprécie énormément.