OVH Cloud OVH Cloud

barre de progression

2 réponses
Avatar
Migamamba
Bonjour à tous,

voici mon problème :
je voudrais rendre mon Prg plus convivial en installant une barre de
progression lorsque plusieurs macros sont en action. (sub main ...)

J'ai pris pour exemple celle (magnifique dureste) de Jonhn Walkenbach,
mais, mais, mais, bien que fonctionnant très bien elle n'est pas synchoniser
avec mon prg.
Qui peut me dire comment m'en sortir et où placer mon prg ?

Le prg proposé par Jonhn Walkenbach :

Sub Main()
' Inserts random numbers on the active worksheet
Dim Counter As Integer
Dim RowMax As Integer, ColMax As Integer
Dim r As Integer, c As Integer
Dim PctDone As Single

If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Cells.Clear
Counter = 1
RowMax = 200
ColMax = 25
For r = 1 To RowMax
For c = 1 To ColMax

' Cells(r, c) = Int(Rnd * 1000) * après quelques modif (*) j'ai
tenté de placer mes macros ici mais nib .. La barre de progression s'exécute
et le prg aussi mais ce dernier commence à la fin de la progression de ma
barre ( d'où un temps passé double .)
(*) des
centaines !!
Counter = Counter + 1
Next c
PctDone = Counter / (RowMax * ColMax)
Call UpdateProgress(PctDone)
Next r
Unload UserForm1
End Sub

Sub UpdateProgress(Pct)
With UserForm1
.FrameProgress.Caption = Format(Pct, "0%")
.LabelProgress.Width = Pct * (.FrameProgress.Width - 10)
.Repaint

* j'ai également essayé de placer mes macros ici mais nib idem .

End With
End Sub

merci à + bye

2 réponses

Avatar
michdenis
Bonjour Migamamba,

Il n'est pas toujour évident de trouver la meilleur échelle de référence pour faire progresser la barre de progression. De plus, ce
n'est pas tous les programmes qui offrent la possibilité s'avoir une progression en mode continu !

À partir de la procédure que propose John Walkenbach, on peut insérer un appel à cette procédure "UpdateProgress(Pct)" à différents
endroits stratégiques de la procédure "Main" (dans un boucle par exemple si cette dernière est assez longue.). Pour faire un choix
judicieux, il faut voir l'ensemble de la procédure qui sera exécutée et faire certains tests, question d'avoir une présentation
acceptable !


Salutations!



"Migamamba" a écrit dans le message de news:

Bonjour à tous,

voici mon problème :
je voudrais rendre mon Prg plus convivial en installant une barre de
progression lorsque plusieurs macros sont en action. (sub main ...)

J'ai pris pour exemple celle (magnifique dureste) de Jonhn Walkenbach,
mais, mais, mais, bien que fonctionnant très bien elle n'est pas synchoniser
avec mon prg.
Qui peut me dire comment m'en sortir et où placer mon prg ?

Le prg proposé par Jonhn Walkenbach :

Sub Main()
' Inserts random numbers on the active worksheet
Dim Counter As Integer
Dim RowMax As Integer, ColMax As Integer
Dim r As Integer, c As Integer
Dim PctDone As Single

If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Cells.Clear
Counter = 1
RowMax = 200
ColMax = 25
For r = 1 To RowMax
For c = 1 To ColMax

' Cells(r, c) = Int(Rnd * 1000) * après quelques modif (*) j'ai
tenté de placer mes macros ici mais nib .. La barre de progression s'exécute
et le prg aussi mais ce dernier commence à la fin de la progression de ma
barre ( d'où un temps passé double .)
(*) des
centaines !!
Counter = Counter + 1
Next c
PctDone = Counter / (RowMax * ColMax)
Call UpdateProgress(PctDone)
Next r
Unload UserForm1
End Sub

Sub UpdateProgress(Pct)
With UserForm1
.FrameProgress.Caption = Format(Pct, "0%")
.LabelProgress.Width = Pct * (.FrameProgress.Width - 10)
.Repaint

* j'ai également essayé de placer mes macros ici mais nib idem .

End With
End Sub

merci à + bye
Avatar
Migamamba
Bonjour Michdenis,

merci beaucoup pour la promptitude de ta réponse.
Je vais encore essayer d'appeler la proc ""UpdateProgress(Pct)" à certains
endroits.
sait-on jamais ?

cordialement




Bonjour Migamamba,

Il n'est pas toujour évident de trouver la meilleur échelle de référence pour faire progresser la barre de progression. De plus, ce
n'est pas tous les programmes qui offrent la possibilité s'avoir une progression en mode continu !

À partir de la procédure que propose John Walkenbach, on peut insérer un appel à cette procédure " à différents
endroits stratégiques de la procédure "Main" (dans un boucle par exemple si cette dernière est assez longue.). Pour faire un choix
judicieux, il faut voir l'ensemble de la procédure qui sera exécutée et faire certains tests, question d'avoir une présentation
acceptable !


Salutations!



"Migamamba" a écrit dans le message de news:

Bonjour à tous,

voici mon problème :
je voudrais rendre mon Prg plus convivial en installant une barre de
progression lorsque plusieurs macros sont en action. (sub main ...)

J'ai pris pour exemple celle (magnifique dureste) de Jonhn Walkenbach,
mais, mais, mais, bien que fonctionnant très bien elle n'est pas synchoniser
avec mon prg.
Qui peut me dire comment m'en sortir et où placer mon prg ?

Le prg proposé par Jonhn Walkenbach :

Sub Main()
' Inserts random numbers on the active worksheet
Dim Counter As Integer
Dim RowMax As Integer, ColMax As Integer
Dim r As Integer, c As Integer
Dim PctDone As Single

If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Cells.Clear
Counter = 1
RowMax = 200
ColMax = 25
For r = 1 To RowMax
For c = 1 To ColMax

' Cells(r, c) = Int(Rnd * 1000) * après quelques modif (*) j'ai
tenté de placer mes macros ici mais nib .. La barre de progression s'exécute
et le prg aussi mais ce dernier commence à la fin de la progression de ma
barre ( d'où un temps passé double .)
(*) des
centaines !!
Counter = Counter + 1
Next c
PctDone = Counter / (RowMax * ColMax)
Call UpdateProgress(PctDone)
Next r
Unload UserForm1
End Sub

Sub UpdateProgress(Pct)
With UserForm1
.FrameProgress.Caption = Format(Pct, "0%")
.LabelProgress.Width = Pct * (.FrameProgress.Width - 10)
.Repaint

* j'ai également essayé de placer mes macros ici mais nib idem .

End With
End Sub

merci à + bye