Clignotement d'ecran - macro Excel

Fermé
Antoine - 27 oct. 2010 à 20:27
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 - 28 oct. 2010 à 23:06
Bonjour à tous,

Voilà j'ai un problème de clignotement d'écran qui persiste malgré le

application.screenupdating = false


après recherche des sujets similaires, il semblerait que les .activate pourraient être les coupables...

ma macro met à jour des graphes avec une boucle qui les active un par un:



NbChart = ActiveSheet.ChartObjects.Count

For cht = 1 To NbChart
ActiveSheet.ChartObjects(cht).Activate
<code>
next cht




comment aller trafiquer un graphe sans "activate"?


Merci d'avance pour votre aide!


A voir également:

1 réponse

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
27 oct. 2010 à 23:35
Bonsoir,
Dans ton code, tu utilises probablement des lignes du type :
ActiveChart.Axes(xlCategory).HasTitle = True

qu'il faudrait remplacer par :
Charts(cht).Axes(xlCategory).HasTitle = True

L'effet de clignotement devrait être réduit.

@+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 28/10/2010 à 09:22
Bonjour à tous

essaies aussi
With sheets("nomde la feuille").ChartObjects(cht)
le code
end with

nota: avec ce système, les propriétés et méthodes de l'objet "chart" doivent être précédées d'un point

par exemple sur l'idée de l'ami Gord (bonjour, ca va ?)
With sheets("nomde la feuille").ChartObjects(cht)   
   .Axes(xlCategory).HasTitle = True   
end with 


en général, il vaut mieux employer with end with aussi bien pour les feuilles et les objets car cela évite les activate ou select: plus rapide et évite les scintillements

tu pourrais ainsi avoir ce code

With Sheets("nomfeuille")
    NbChart = .ChartObjects.Count
    For cht = 1 To NbChart
        With .ChartObjects(cht)
            .Axes(xlCategory).HasTitle = True
        End With
    Next
End With


encore une fois: n'oublie pas les points (expérience perso) !!!
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
28 oct. 2010 à 23:06
Bonsoir,
Je dois admettre que la solution proposée par Michel (oui, ça va) est plus complète que la mienne, elle a aussi l'avantage d'accélérer l'exécution du code surtout s'il y a beaucoup d'objets.
@+
0