J'ai un code qui ressemble à ça (trouvé sur le net)
Sub GrosCalcul()
Dim i As Long
For i = 1 To 1000000
' fais des trucs
' plein de trucs
' une quantité impressionnante de trucs
' ça y est, les trucs sont finis pour ce i
If i Mod 10000 = 0 Then
Application.StatusBar = Int(i / 10000) & "% effectués"
End If
Next i
Application.StatusBar = False
End Sub
Mon probleme c'est que je ne sais pas quelle partie mettre pour marquer
differentes étapes.
si je met tout mon code a la place des commentaires il est traité 10000 fois
!!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc
"Michael BAS" a écrit dans le message de news:
Bonjour,
J'ai un code qui ressemble à ça (trouvé sur le net)
Sub GrosCalcul() Dim i As Long For i = 1 To 1000000 ' fais des trucs ' plein de trucs ' une quantité impressionnante de trucs ' ça y est, les trucs sont finis pour ce i If i Mod 10000 = 0 Then Application.StatusBar = Int(i / 10000) & "% effectués" End If Next i Application.StatusBar = False End Sub
Mon probleme c'est que je ne sais pas quelle partie mettre pour marquer differentes étapes. si je met tout mon code a la place des commentaires il est traité 10000
fois
!!!
Hello,
on utilise ce genre de code pour permettre à l'utilisateur de savoir "ou il en est". Ce type de code est utile quand tu fais un traitement qui est un ensemble ou une itération de traitements élémentaires. Par exemple: - Lecture d'un fichier ligne par ligne - Insertion de records (un par un) dans une DB - Tout type de traitement long MAIS décomposable en traitements unitaires
Voici un bout de code illustrant ceci. C'est un exemple de traitement long (remplissage d'un gros tableau). NB: ce n'est qu'un exemple stupide illustrant un processus qui prend du temps. Voici la bête:
' 8<--------------------------------------------
Option Explicit Const N_ELEM As Long = 1000000 Private Sub Command1_Click() Dim i As Long Dim j As Long Dim tablo(N_ELEM) As Double Dim n As Double
For i = 1 To N_ELEM
' le truc unitaire qui prend du temps n = 1 For j = 1 To 10 n = n * Rnd * 10 Next j tablo(i) = n DoEvents ' fin du truc unitaire qui prend du temps
' affichage de l'avancement If (i Mod 100) = 0 Then Text1.Text = Str$(Int(i / N_ELEM * 100)) & "% effectué" Text1.Refresh DoEvents End If Next i Text1.Text = "100 % effectué" End Sub
' 8<--------------------------------------------
Cette méthode n'est pas applicable (du moins pas aussi facilement) si ton traitement n'est pas ou pas aisément découpable en petites unités.
Espérant que ça t'aide.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Michael BAS" <michael_bas@yahoo.fr> a écrit dans le message de
news:uigG30DmFHA.576@TK2MSFTNGP15.phx.gbl...
Bonjour,
J'ai un code qui ressemble à ça (trouvé sur le net)
Sub GrosCalcul()
Dim i As Long
For i = 1 To 1000000
' fais des trucs
' plein de trucs
' une quantité impressionnante de trucs
' ça y est, les trucs sont finis pour ce i
If i Mod 10000 = 0 Then
Application.StatusBar = Int(i / 10000) & "% effectués"
End If
Next i
Application.StatusBar = False
End Sub
Mon probleme c'est que je ne sais pas quelle partie mettre pour marquer
differentes étapes.
si je met tout mon code a la place des commentaires il est traité 10000
fois
!!!
Hello,
on utilise ce genre de code pour permettre à l'utilisateur de
savoir "ou il en est". Ce type de code est utile quand tu fais
un traitement qui est un ensemble ou une itération de traitements
élémentaires.
Par exemple:
- Lecture d'un fichier ligne par ligne
- Insertion de records (un par un) dans une DB
- Tout type de traitement long MAIS décomposable en
traitements unitaires
Voici un bout de code illustrant ceci. C'est un exemple
de traitement long (remplissage d'un gros tableau).
NB: ce n'est qu'un exemple stupide illustrant un processus
qui prend du temps. Voici la bête:
' 8<--------------------------------------------
Option Explicit
Const N_ELEM As Long = 1000000
Private Sub Command1_Click()
Dim i As Long
Dim j As Long
Dim tablo(N_ELEM) As Double
Dim n As Double
For i = 1 To N_ELEM
' le truc unitaire qui prend du temps
n = 1
For j = 1 To 10
n = n * Rnd * 10
Next j
tablo(i) = n
DoEvents
' fin du truc unitaire qui prend du temps
' affichage de l'avancement
If (i Mod 100) = 0 Then
Text1.Text = Str$(Int(i / N_ELEM * 100)) & "% effectué"
Text1.Refresh
DoEvents
End If
Next i
Text1.Text = "100 % effectué"
End Sub
' 8<--------------------------------------------
Cette méthode n'est pas applicable (du moins pas aussi
facilement) si ton traitement n'est pas ou pas aisément
découpable en petites unités.
Espérant que ça t'aide.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
J'ai un code qui ressemble à ça (trouvé sur le net)
Sub GrosCalcul() Dim i As Long For i = 1 To 1000000 ' fais des trucs ' plein de trucs ' une quantité impressionnante de trucs ' ça y est, les trucs sont finis pour ce i If i Mod 10000 = 0 Then Application.StatusBar = Int(i / 10000) & "% effectués" End If Next i Application.StatusBar = False End Sub
Mon probleme c'est que je ne sais pas quelle partie mettre pour marquer differentes étapes. si je met tout mon code a la place des commentaires il est traité 10000
fois
!!!
Hello,
on utilise ce genre de code pour permettre à l'utilisateur de savoir "ou il en est". Ce type de code est utile quand tu fais un traitement qui est un ensemble ou une itération de traitements élémentaires. Par exemple: - Lecture d'un fichier ligne par ligne - Insertion de records (un par un) dans une DB - Tout type de traitement long MAIS décomposable en traitements unitaires
Voici un bout de code illustrant ceci. C'est un exemple de traitement long (remplissage d'un gros tableau). NB: ce n'est qu'un exemple stupide illustrant un processus qui prend du temps. Voici la bête:
' 8<--------------------------------------------
Option Explicit Const N_ELEM As Long = 1000000 Private Sub Command1_Click() Dim i As Long Dim j As Long Dim tablo(N_ELEM) As Double Dim n As Double
For i = 1 To N_ELEM
' le truc unitaire qui prend du temps n = 1 For j = 1 To 10 n = n * Rnd * 10 Next j tablo(i) = n DoEvents ' fin du truc unitaire qui prend du temps
' affichage de l'avancement If (i Mod 100) = 0 Then Text1.Text = Str$(Int(i / N_ELEM * 100)) & "% effectué" Text1.Refresh DoEvents End If Next i Text1.Text = "100 % effectué" End Sub
' 8<--------------------------------------------
Cette méthode n'est pas applicable (du moins pas aussi facilement) si ton traitement n'est pas ou pas aisément découpable en petites unités.
Espérant que ça t'aide.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;