bonjour à tous,

Par avance, merci à celles et ceux qui prendront le temps de lire ce post.

après plusieurs heures de recherches vaines ici et ailleurs, je me résous à poster cette question :
Peut-on éviter ces effets de scintillement / tressautement des contrôles ou shapes (présents sur une feuille) à la fin de l'exécution d'une macro ?

Sur un code simple comme la suppression des filtres d'un tableau de données structurées (macro écrite dans un module et lancée via un CB)
Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Sub supfiltre()
    Dim i As Integer
    Application.ScreenUpdating = False
    For i = 1 To 15
        ActiveSheet.ListObjects("T_TAB_1").Range.AutoFilter Field:=i
    Next
    Application.ScreenUpdating = True
End Sub


symptôme : les contrôles et/ou shapes présents sur la feuille XLS "sautent" (je sais pas comment l'exprimer autrement).
ça dure un 1/10è de seconde, c'est pas grand chose mais l'expérience utilisateur n'est pas top.

et bien sûr c'est pire avec un code événementiel sur un worksheet_change comme celui-ci (mise en forme de la ligne entière d'un tableau si cellule sélectionnée)
Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
    With ListObjects("T_TAB_1").DataBodyRange
        .Interior.Color = RGB(255, 255, 255)
        .Font.Color = RGB(0, 0, 0)
        .Font.Bold = False
    End With
 
    If Not Intersect(ListObjects("T_TAB_1").DataBodyRange, Target) Is Nothing And Target.Count = 1 Then
            b = Target.Row
            With ListObjects("T_TAB_1").ListRows(b - 11).Range
                .Interior.Color = RGB(149, 170, 184)
                .Font.Color = RGB(255, 255, 255)
                .Font.Bold = True
            End With
 
        Else:
        Application.ScreenUpdating = True
        Exit Sub
    End If
 
Application.ScreenUpdating = True
End Sub


Dans ce cas bien entendu, à chaque sélection de cellule, les contrôles "sautent" et là, c'est franchement désagréable.

Je ne comprend pas d'où ça vient et je ne parviens pas à empêcher cet effet.
"Application.ScreenUpdating = True / False" ne change rien (ou alors, je l'utilise mal)

Vous l'aurez sans doutes compris, je ne suis pas un pro en VBA (les experts auront certainement des boutons en lisant ces quelques lignes de code ), donc j'ai bêtement tenté les "application.calculation", "application.EnableEvents",... etc sans succès....

Je ne pense pas que ça viennent du fait que les contrôles soient directement sur une feuille vu que d'autres macros ,telles que l'alimentation des combo ou les recherches "intuitives" sur des combo (en procédures événementielles), ne provoquent pas cet effet de scintillement.
Est-ce que ça vient du code ?
Est-ce que ça vient de la version d'Excel ?
y-a-t-il un paramètre qui m'échappe dans VBE ?

bref, je sèche.


Quelqu’un aurait-il un début d'explication pour le béotien que je suis ? ou un correctif à apporter ?
Si nécessaire, je peux fournir un petit fichier d'exemple avec des données fictives.

Précision (si besoin), je ne veux pas passer par un formulaire. Les choix / filtres / interactions et actions de l’utilisateur doivent se faire via une feuille xls.


Encore une fois merci pour votre lecture.