VBA--Application.ScreenUpdating

J

JJ1

Guest
Bonjour,

Je viens vers vous pour une question simple:

J'ai un bout de code avec sous le sub() Application.ScreenUpdating = False puis mon code et avant End Application.ScreenUpdating = True.

Est-il possible d'ajouter un compteur (qui lui défilerait) pour m'indiquer où en est ma boucle dans mon code?

Merci de votre idée.

Bonne soirée
 

laetitia90

XLDnaute Barbatruc
Re : VBA--Application.ScreenUpdating

bonjour jj1 si tu bloque la mise a jour c'est je pense pour aller plus vite non??? tu vas en perdre le bénefice en plus tu vas rallonger le temps pour effectuer ton code

a l'extreme... en fonction de ton code tu peut faire un Updating entre chaque sequence mais cela va dependre de ton code que l'on connais pas???
 
J

JJ1

Guest
Re : VBA--Application.ScreenUpdating

Bonjour Laetitia,

Merci pour ta réponse....logique !

mais c'est pas évident de voir un écran figé, sans aucune visibilité de l'avancement!

La vitesse prime sur la lisibilité.

Bonne soirée
 

pascal82

XLDnaute Occasionnel
Re : VBA--Application.ScreenUpdating

Bonjour,

Personnellement dans le cas d'utilisation de boucles et de variables j'utilise

Option Explicit
' Affiche un message dans la barre de status d'Excel
Sub StsBar(ByVal strMsg As String)
Application.StatusBar = strMsg
End Sub

puis

Dim strOps As String 'definir la variable
code
StsBar strOps & " Var1=" & Var1 'exemple de variable a suivre
fin de code

Mais à voir si cela est possible dans votre cas

Cordialement
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA--Application.ScreenUpdating

Bonjour à tous,

ma petite contribution en pièce jointe
il s'agit de boucler 10.000 fois et afficher la variable I dans une cellule

on constate que les temps d'exécution varient de 1 à 6 (les temps peuvent varier d'un PC à l'autre)

la meilleure solution est donc :
Code:
MsgBox ("Allez boire un café, la procédure continue sans vous !")
Application.ScreenUpdating = False
' la suite du code
' ----------------


Application.ScreenUpdating = True
à+
Philippe
 

Pièces jointes

  • 111.xls
    47.5 KB · Affichages: 65
  • 111.xls
    47.5 KB · Affichages: 74
  • 111.xls
    47.5 KB · Affichages: 76

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA--Application.ScreenUpdating

RE,
le concept le plus important enfin pour moi.... c'est deja d'optimiser ton code si bien ecris cela peut aller trés vite mais bon sans plus d'infos pas simple
Pour aller dans le même sens que Laetitia, j'ajouterai une chose à laquelle on ne pense pas assez souvent:
au début du code:
Code:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
et en fin de procédure
Code:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Vous serez étonnés du résultat, et d'autant plus fort si la feuille contient des : SOMMEPROD, RECHERCHEV, EQUIV, des formules matricielles, ...............

à+
Philippe
 
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA--Application.ScreenUpdating

Re,

Pour illustrer ma réponse précédente, voir en pièce jointe trois procédures identiques

la 3ème est 30 fois plus rapides que les 2 autres

à+
Philippe
 

Pièces jointes

  • 111.xls
    57 KB · Affichages: 98
  • 111.xls
    57 KB · Affichages: 102
  • 111.xls
    57 KB · Affichages: 101

Discussions similaires

Réponses
17
Affichages
311

Statistiques des forums

Discussions
312 103
Messages
2 085 322
Membres
102 862
dernier inscrit
Emma35400