Merci ! Je vois effectivement le temps affiché, une fois la procédure terminée!
Mais le temps de traitement prévisionnel ou la progression?
Surtout pour des traitements de plus de 24 heures...
Merci 1000 fois de toutes vos indications
Merci ! Je vois effectivement le temps affiché, une fois la procédure terminée!
Mais le temps de traitement prévisionnel ou la progression?
Surtout pour des traitements de plus de 24 heures...
Merci 1000 fois de toutes vos indications
Bonsoir Kikof !
Désolé encore moi, DBA dans une grande boite.
Vous pensez que la réponse à mon problème est possible ?
Timer prévisionnel du temps de traitement ou bien progression de l'execution du traitement ?
Sachant que mes temps de traitements previsionnels se situent entre 24 et 72 heures ?
Meric de votre diligence !
Tutoie, tutoie... je te tutoie depuis le débutEnvoyé par ALEXM
Doit y avoir une solution.
Il faut creuser. J'ai fait un bout d'essai hier.
J'ai essayé en plaçant les marqueurs dans le for.
J'ai testé le code suivant :
Ca a l'air de fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub test() Dim cAnalyse As New clsMarqueurs Dim X As Long Dim TempsRestant As Double Dim TempsEcoule As Double For X = 1 To 10000 cAnalyse.ajouterMarqueur "*** test ***" cAnalyse.terminerMarqueur "*** test ***" TempsEcoule = TempsEcoule + cAnalyse.dureeMarqueur("*** test ***") TempsRestant = ((TempsEcoule / X) * 10000) - TempsEcoule Debug.Print "Temps écoulé : " & TempsEcoule & " ms" Debug.Print "Temps restant : " & TempsRestant & " ms" Next X End Sub
Par contre, j'ai un bug avec la classe clsMarqueurs
Le marqueur existe déjà et donc il refuse de le recréer. si je mets la ligne en commentaire ça marche. Mais il faut qu'il passe au moins une fois dedans.
Merci je vais essayer de creuser un peu par contre j'ai un message d'erreur sur la ligne
TempsEcoule = TempsEcoule + cAnalyse.dureeMarqueur("*** test ***")
'Erreur d'execution 438." Propriété ou Méthode non gérée par cet objet.
Merci dans tous les cas. Si tu as une idée pour le Marqueur dans une boucle, je vais essayer de creuser également.
LeTimer est vraiment intéressant dans une procédure en boucle.
Merci 1000 fois pour tout cela
C'est exactement le problème que j'ai... et ce que je ne comprends pas : ça a fonctionné au moins 1 fois
Ca intervient sur cette ligne dans le module de classe clsMarqueurs
A priori, le marqueur n'est pas détruit et comme il existe toujours : il ne peux pas le recréer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Sub ajouterMarqueur(ByVal pNomMarqueur As String) Marqueurs.Add New clsMarqueur, pNomMarqueur ' erreur Marqueurs(pNomMarqueur).lNom (pNomMarqueur) End Sub
Quand les lignes d'ajout et de fin de marqueurs sont extérieurs à la boucle : il n'y a pas de soucis. Le code fonctionne bien. Mais si ces lignes sont dans le for : ça plante.
J'ai créé un marqueur à chaque tour de boucle. Plus de plantage.
Mais je n'arrive pas à un résultat satisfaisant en terme de concordance de temps écoulé sur l'ensemble de la procédure et pour chaque tour de boucle.
Je te donne la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub test() Dim cAnalyse As New clsMarqueurs Dim X As Long Dim TempsRestant As Double Dim TempsEcoule As Double cAnalyse.ajouterMarqueur "*** test ***" For X = 1 To 10000 cAnalyse.ajouterMarqueur "*** test " & X & " ***" cAnalyse.terminerMarqueur "*** test " & X & " ***" TempsEcoule = TempsEcoule + cAnalyse.dureeMarqueur("*** test " & X & " ***") TempsRestant = ((TempsEcoule / X) * 10000) - TempsEcoule Debug.Print "Temps écoulé : " & TempsEcoule & " ms" Debug.Print "Temps restant : " & TempsRestant & " ms" Next X cAnalyse.terminerMarqueur "*** test ***" cAnalyse.rapportDebug End Sub
J'ai fait encore des tests. j'ai supprimé tout ce qui est inutile dans la procédure :
Voici ce que j'obtiens comme temps (évidemment cela dépend de l'occupation du CPU) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub testbis() Dim cAnalyse As New clsMarqueurs Dim X As Long Dim TempsRestant As Double Dim TempsEcoule As Double cAnalyse.ajouterMarqueur "*** test ***" For X = 1 To 10000 cAnalyse.ajouterMarqueur "*** test " & X & " ***" cAnalyse.terminerMarqueur "*** test " & X & " ***" TempsEcoule = TempsEcoule + cAnalyse.dureeMarqueur("*** test " & X & " ***") TempsRestant = ((TempsEcoule / X) * 10000) - TempsEcoule Next X cAnalyse.terminerMarqueur "*** test ***" Debug.Print "Temps écoulé : " & TempsEcoule & " ms" cAnalyse.rapportDebug End Sub
Temps écoulé : 328 ms
*** test *** : 532ms
Temps écoulé : 330 ms
*** test *** : 516ms
Temps écoulé : 281 ms
*** test *** : 500ms
Temps écoulé : 357 ms
*** test *** : 500ms
Temps écoulé : 358 ms
*** test *** : 516ms
Merci ! Mais j'ai toujours la même erreur dans TestBis
'Erreur d'execution 438." Propriété ou Méthode non gérée par cet objet.
sur la ligne :
TempsEcoule = TempsEcoule + cAnalyse.dureeMarqueur("*** test " & X & " ***")
En désactivant cette ligne le programme tourne dans la boucle mais je n'ai que :
*** test 9814 *** : 0ms
*** test 9815 *** : 0ms
Merci beaucoup
Va dans le module clMarqueurs
il y a une erreur : ce n'est pas sDuree mais Duree
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Function dureeMarqueur(ByVal pNomMarqueur As String) As String dureeMarqueur = Marqueurs.Item(pNomMarqueur).sDuree End Function
Bonsoir Kikof !
Je te remerie ca marche pas mal du tout. J'ai fait un peu évoluer la chose :
J'ai désactivé dans Cls marqueur : 'Public Sub rapportDebug()
Et dans le code principal j'ai juste gardé le TempsRestant après l'avoir mis à un format d'affichage classique :
TempsRestant = Round((TempsEcoule / X) * (Nb_Enr - 1) - TempsEcoule, 2)
Puis dans la procédure principale :
'Debug.Print "Temps écoulé : " & TempsEcoule & " s"
Debug.Print "TempsRestant : " & TempsRestant & "s"
'cAnalyse.rapportDebug
Le résultat est bien sympathique et il est interessant de le garder pour tous les utilisteurs access :
TempsRestant : 2,87s
TempsRestant : 2,82s
TempsRestant : 2,78s
TempsRestant : 2,73s
TempsRestant : 2,69s
TempsRestant : 2,64s
Voilà j'ain un tout petit peu contribué à faire avancer le Schmilblik.
Ad augusta per angusta !
Envoyé par ALEXM
A tes souhaitsAd augusta per angusta !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager