Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

laetitia90

XLDnaute Barbatruc
Re : VBA--Application.ScreenUpdating

re tous
le statusbar une autre possibilité bien sûr
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
 

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
J

JJ1

Guest
Re : VBA--Application.ScreenUpdating

Bonjour à tous,

Je vais tenter d'appliquer le code de Philippe (vitesse impressionnante !) à mon fichier.
je vous dirai le résultat.
MERCI beaucoup.
 

Discussions similaires

Réponses
17
Affichages
348
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…