Eliminer le scintillement de l'écran pendant l'exécution d’une macro

Bonjour à tous,

J’ai une macro qui contient un timer, j’aimerais éliminer le scintillement (sous Excel 2010) pendant l'exécution de cette macro.

Module standard :

Option Explicit
Sub Color()
    Application.ScreenUpdating = False
    Range("A1").Value = Application.UsableWidth
    If Application.UsableWidth < 850 Then
        Range("A1").Interior.Color = RGB(250, 200, 150)
        Range("A1").Font.Color = vbBlue
    Else
        Range("A1").Interior.Color = RGB(100, 400, 100)
        Range("A1").Font.Color = vbRed
    End If
    timer
End Sub

Sub timer()
    Application.ScreenUpdating = False
    On Error Resume Next
    DoEvents
    Application.OnTime Now + TimeValue("0:00:01"), "Color"
End Sub

Module ThisWorkBook :

Option Explicit
Private Sub Workbook_Open()
    Color
End Sub

Je vous remercie de toute aide que vous pourrez m'apporter.

12test2.xlsm (23.92 Ko)

bon soir,

minimaliser est possible, eliminer, non. Il faut eliminer tout ce qui ne sert a rien.

Bonjour,

pour ça il faut oublier ton timer.
Met-toi plutôt dans :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

de ThisWorkbook.
L'utilisateur finira bien par cliquer ailleurs après avoir redimensionné la fenêtre ce qui fera la mise à jour.


Autre possibilité, utiliser un événement d'application.
Non disponibles à la base, il faut faire connaitre à VBA l'application excel à l'ouverture pour pouvoir y accéder.
Relancer Sub Workbook_Open() à chaque modif du code car vba a la mémoire courte...
voir exemple joint
Par contre l'événement est appelé 4 fois (?). Pas vraiment gênant comme bug vu que c'est un code très court
Un appel par classeur ouvert en fait. J'ai adapté le code pour en tenir compte. Ta feuille est mise à jour même si c'est un autre classeur actif…
eric

Bonjour,

Je vous remercie pour vos réponses les amis, je sais que cela fonctionnera bien avec les versions ultérieures d'Excel, mais je cherche une solution pour la version 2010 !!!

c'est pareil

Bonjour,

Tu as testé ?
Si pb, dis lequel...
eric

Bonjour,

J'ai testé ça ne marche pas, Excel 2010 ne prend pas en charge ce code (lorsque la fenêtre de l'application est redimensionnée) :

Private Sub App_WindowResize(ByVal Wb As Workbook, ByVal Wn As Window)
    ...
End Sub

L'application peut exécuter la macro seulement lorsqu'une fenêtre de classeur est redimensionnée :

Private Sub Workbook_WindowResize(ByVal Wn As Excel.Window)
    ...
End Sub

Ce même problème était derrière la publication de ce Topic :

https://forum.excel-pratique.com/excel/largeur-de-colonne-en-fonction-de-la-taille-de-la-fenetre-pri...

Tu as testé sur mon fichier joint sans rien toucher au code avant ?

Bonjour eriiic,

Eh oui !

Il te reste éventuellement la 1ère option proposée dans mon post

Cette solution fera le travail jusqu'à ce que je recherche plus profondément et trouve une meilleure solution. Merci beaucoup Monsieur Eriiic.

Rechercher des sujets similaires à "eliminer scintillement ecran execution macro"