Blocage du StatutBar

coco_lapin

XLDnaute Impliqué
Bonjour le forum,

Lorsque j'ai des boucles un peu longues j'aime bien mettre un StatusBar pour voir l'évolution de ma macro.
Parfois, sans savoir pourquoi, le StatusBar se bloque.

Pour le débloquer je fais "Echap", la macro s'arrête sur le code en cours puis j'appuie sur "Continuer". Le StatutBar se débloque alors mais parfois se rebloque à nouveau.

je ne sais pas si "Application.ScreenUpdating = False" a une influence sur ce blocage.

Exemple de structure de code que j'utilise souvent:
Code:
Sub es()
Application.ScreenUpdating = False
For i = 1 To 20000
  Application.StatusBar = i
  If Cells(i, 1) = Cells(i, 2) Then
    Cells(i, 1) = i
  End If
Next i
Application.ScreenUpdating = True
End Sub

Merci pour votre aide.
 

job75

XLDnaute Barbatruc
Re : Blocage du StatutBar

Bonjour coco_lapin,

En utilisant un tableau VBA c'est très rapide, pas besoin de StatusBar :

Code:
Sub es()
Dim n&, t
n = 60000
t = [A1].Resize(n, 2)
For n = 1 To n
  If t(n, 1) = t(n, 2) Then t(n, 1) = n
Next
[A1].Resize(n - 1) = t
End Sub
A+
 

coco_lapin

XLDnaute Impliqué
Re : Blocage du StatutBar

job75, re-bonsoir,

Oui OK le traitement par tableaux qui vont bien plus vite.
Je reconnais que je ne les utilise pas trop peut être parce que je ne les ai pas bien maîtrisés.
Je vais plutôt vers le code que je maitrise sans trop réfléchir.
Merci de toute façon pour ta solution de contournement.:)

Maintenant je serait bien curieux d'avoir une réponse à ma question posée sur le StatutBar.
 

job75

XLDnaute Barbatruc
Re : Blocage du StatutBar

Bonjour coco_lapin,

Chez moi il n'y a jamais de blocage.

Mais peut-être que la StatusBar (qui ne fait que ralentir la macro) s'emmêle les crayons.

Il faut surtout que l'on puisse lire les valeurs :

Code:
Sub es()
Application.ScreenUpdating = False
For i = 1 To 60000
  If i Mod 5000 = 0 Then Application.StatusBar = i
  If Cells(i, 1) = Cells(i, 2) Then
    Cells(i, 1) = i
  End If
Next i
Application.ScreenUpdating = True
End Sub
A+
 

Efgé

XLDnaute Barbatruc
Re : Blocage du StatutBar

Bonjour coco_lapin, Bonjour Job75,
Si je puis me permetre, pour éviter les ennuis et bien que, comme l'a dit Job, la gestion de la barre ralenti le code, je pense qu'il faut la gérer complètement:
VB:
Sub es_3()
Application.ScreenUpdating = False
'Prise en main de la barre
Application.StatusBar = ""
For i = 1 To 60
  If i Mod 5 = 0 Then Application.StatusBar = i
  If Cells(i, 1) = Cells(i, 2) Then
    Cells(i, 1) = i
  End If
Next i
Application.ScreenUpdating = True
'Réactivation de la barre
Application.StatusBar = False
End Sub
Cordialement
 

laetitia90

XLDnaute Barbatruc
Re : Blocage du StatutBar

bonjour tous :):):):)

a mon avis c'est
Code:
 Application.ScreenUpdating = False
en debut de code qui pose pb...

d'un coté tu demande de pas rafraichir l'ecran mais d'afficher la progression excel pas "content" a du mal a suivre


si tu prends le code de l'ami Job :):)

Code:
 If i Mod 5000 = 0 Then Application.StatusBar = i
affichage tous les 5000 pas de souci cela suivre
par contre si tu mets 5 au lieu de 5000 meme saccade enfin chez moi!!! cela doit dependre de la puissance du pc & de la carte graphique a mon avis
mais bon!!!! dans tout les cas un tablo bien mieux :):):)
 

Discussions similaires

Statistiques des forums

Discussions
312 334
Messages
2 087 382
Membres
103 530
dernier inscrit
dieubrice