Bonjour
Personne pour se pencher sur mon cas, est ce parce qu’il est désespéré....
Je sais que je réinitialise la listbox plusieurs car je fais apparaitre "Tous" dans les combobox de filtre, mais est ce qu'il existe une solution pour suspendre la réinitialisation si elle a déjà été faite une fois
Si quelqu'un a une idée....
Bonjour SPGoder,
Je viens de voir ton fichier et je me suis penché sur ton cas, qui n'est pas désespéré !
Ce qui se passe, c'est que les procédures événementielles des Combos sont systématiquement déclenchées dès que leur contenu est modifié, non seulement par l'opérateur
mais aussi par le logiciel (par exemple par
ComboBox_Choix_Nom_Matériel.Value = "Tous").
Elles sont donc appelées plusieurs fois, et appellent aussi plusieurs fois les
Initialise_ListBox_Intervention et ainsi de suite, ce qui ralentit l'exécution et peut même conduire à des plantages.
Une solution un peu bourrin est d'utiliser une variable globale
EventCount et de commencer les procédures événementielles par :
If EventCount Then Exit Sub
EventCount = EventCount + 1
en les terminant par :
EventCount = EventCount - 1
Au lieu d'un compteur on peut utiliser un simple booléen. On peut aussi déclarer la variable en
Static au niveau de la procédure.
Cette solution ne m'a jamais trop plu, mais elle a toujours donné de bons résultats dans des cas similaires.
Dans ton cas, avec cette modif, on ne passe plus que 2 fois dans
Initialise_ListBox_Intervention ce qui au vu du code me semble normal (testé avec des points d'arrêt).
A toi de creuser cette piste, et bon courage ! Je te joins ton fichier avec ces modifs.