Création d'un chronomètre

Le
COQUITO
Bonjour à tous,

Je souhaiterais afficher un chronomètre pendant qu'une macro Excel vba qui
prend un certain temps s'exécute, ceci dans le but de faire patienter
l'utilisateur.

J'ai utilisé un code trouvé sur un forum pour créer une "horloge" digitale à
l'aide d'une shape.
Ce chrono fonctionne très bien mais ne permet pas qu'une procédure vba
s'exécute en arrière plan.

J'ai trouvé un exemple utilisant un userform (ce que conseillait fortement
le membre du forum qui apportait sa réponse) et faisant appel à une fonction
"API" de windows et c'est là que je ne suis plus, car je connais mal ce
domaine.

Suffit-il d'écrire : Public Declare Function GetTickCount& Lib "kernel32" ()
ou faut-il au préalable activer une fonction windows ou excel ?

D'autre part, pour ce chronomètre, je souhaiterais qu'il se mette en marche
lorsque la procédure vba qui doit s'exécuter en arrière plan démarre et
qu'il s'arrête de lui-même quand le programme vba est arrivé à son terme,
donc, pas de bouton de marche/arrêt.

Je vous remercie par avance si vous pouvez m'aider à réaliser ce programme.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21953141
Bonjour,

Essaie ceci : http://cjoint.com/?fimauaYaFC

Tu ouvres le formulaire en mode création, et tu indiques le nom de la macro à exécuter.

Je n'ai pas testé ceci sur une longue macro... je n'en ai pas à ma disposition !
;-)



"COQUITO"
Bonjour à tous,

Je souhaiterais afficher un chronomètre pendant qu'une macro Excel vba qui
prend un certain temps s'exécute, ceci dans le but de faire patienter
l'utilisateur.

J'ai utilisé un code trouvé sur un forum pour créer une "horloge" digitale à
l'aide d'une shape.
Ce chrono fonctionne très bien mais ne permet pas qu'une procédure vba
s'exécute en arrière plan.

J'ai trouvé un exemple utilisant un userform (ce que conseillait fortement
le membre du forum qui apportait sa réponse) et faisant appel à une fonction
"API" de windows et c'est là que je ne suis plus, car je connais mal ce
domaine.

Suffit-il d'écrire : Public Declare Function GetTickCount& Lib "kernel32" ()
ou faut-il au préalable activer une fonction windows ou excel ?

D'autre part, pour ce chronomètre, je souhaiterais qu'il se mette en marche
lorsque la procédure vba qui doit s'exécuter en arrière plan démarre et
qu'il s'arrête de lui-même quand le programme vba est arrivé à son terme,
donc, pas de bouton de marche/arrêt.

Je vous remercie par avance si vous pouvez m'aider à réaliser ce programme.
michdenis
Le #21957541
J'ai omis de mentionner que l'idée originale contenue
dans ce fichier fut soumise sur ce groupe de discussion
par Frédéric Sigonneau que je salue au passage.



"michdenis"
Bonjour,

Essaie ceci : http://cjoint.com/?fimauaYaFC

Tu ouvres le formulaire en mode création, et tu indiques le nom de la macro à exécuter.

Je n'ai pas testé ceci sur une longue macro... je n'en ai pas à ma disposition !
;-)



"COQUITO"
Bonjour à tous,

Je souhaiterais afficher un chronomètre pendant qu'une macro Excel vba qui
prend un certain temps s'exécute, ceci dans le but de faire patienter
l'utilisateur.

J'ai utilisé un code trouvé sur un forum pour créer une "horloge" digitale à
l'aide d'une shape.
Ce chrono fonctionne très bien mais ne permet pas qu'une procédure vba
s'exécute en arrière plan.

J'ai trouvé un exemple utilisant un userform (ce que conseillait fortement
le membre du forum qui apportait sa réponse) et faisant appel à une fonction
"API" de windows et c'est là que je ne suis plus, car je connais mal ce
domaine.

Suffit-il d'écrire : Public Declare Function GetTickCount& Lib "kernel32" ()
ou faut-il au préalable activer une fonction windows ou excel ?

D'autre part, pour ce chronomètre, je souhaiterais qu'il se mette en marche
lorsque la procédure vba qui doit s'exécuter en arrière plan démarre et
qu'il s'arrête de lui-même quand le programme vba est arrivé à son terme,
donc, pas de bouton de marche/arrêt.

Je vous remercie par avance si vous pouvez m'aider à réaliser ce programme.
COQUITO
Le #21959401
Merci, une fois de plus, Michdenis pour cette réponse ultra rapide !
C'est tout à fait ce style de chrono que j'attendais.

Je vais essayer d'adapter ton programme de façon à ce que l'utilisateur
n'ait pas à démarrer lui-même le chrono, car je souhaiterais vraiment que
celui-ci s'enclenche simultanément avec la macro qui tournera en arrière
plan.

Comme cette macro est actuellement lancée via un menu personnalisé, je pense
intercaler une petite procédure qui affichera le UserForm.
Et c'est donc maintenant via la procédure évènementielle UserForm_Activate,
que j'appellerai ma macro.

J'espère que cela va fonctionner et ne pas créer d'incompatibilités
quelconques avec les autres procédures de ton programme.
(Quand j'appelle l'aide en ligne sur "AddressOf" par exemple, je vois que
cela me dépasse un peu ; je n'ai jamais utilisé ces fonctions jusqu'à
maintenant et j'ai donc un peu peur d'introduire "le grain de sable" qui
bloquera tout).

Aussi, puis-je te demander de me dire d'ores et déjà si l'adaptation que
j'envisage est possible ou si je déraille complètement.
Pourrais-tu me dire aussi à quoi correspondent "hWnd" et "nIDEvent" dans la
déclaration de la fonction "KillTimer".
J'aimerais également savoir si les variables "H" et "DS" sont sciemment
déclarées comme étant de type Variant puisqu'elles ne sont pas typées dans
la procédure Chrono.

Je me rends compte de mon exigence avec toutes ces questions, mais le
développement Excel Vba m'intéresse beaucoup et je voudrais tellement
améliorer mes connaissances.

Un grand merci !


"michdenis" news:
Bonjour,

Essaie ceci : http://cjoint.com/?fimauaYaFC

Tu ouvres le formulaire en mode création, et tu indiques le nom de la
macro à exécuter.

Je n'ai pas testé ceci sur une longue macro... je n'en ai pas à ma
disposition !
;-)



"COQUITO" discussion :

Bonjour à tous,

Je souhaiterais afficher un chronomètre pendant qu'une macro Excel vba qui
prend un certain temps s'exécute, ceci dans le but de faire patienter
l'utilisateur.

J'ai utilisé un code trouvé sur un forum pour créer une "horloge" digitale
à
l'aide d'une shape.
Ce chrono fonctionne très bien mais ne permet pas qu'une procédure vba
s'exécute en arrière plan.

J'ai trouvé un exemple utilisant un userform (ce que conseillait fortement
le membre du forum qui apportait sa réponse) et faisant appel à une
fonction
"API" de windows et c'est là que je ne suis plus, car je connais mal ce
domaine.

Suffit-il d'écrire : Public Declare Function GetTickCount& Lib "kernel32"
()
ou faut-il au préalable activer une fonction windows ou excel ?

D'autre part, pour ce chronomètre, je souhaiterais qu'il se mette en
marche
lorsque la procédure vba qui doit s'exécuter en arrière plan démarre et
qu'il s'arrête de lui-même quand le programme vba est arrivé à son terme,
donc, pas de bouton de marche/arrêt.

Je vous remercie par avance si vous pouvez m'aider à réaliser ce
programme.

michdenis
Le #21962091
De ton bouton ou ta commande dans ton menu,
tu n'as qu'à appeler une petite macro qui a pour
but de lancer le Formulaire

Sub Ouvrir_Formulaire()
Userform1.Show
End Sub

Et dans le formulaire, tu remplaces "MaMacro" par la macro
que tu veux exécuter dans le classeur.

Tout devrait se faire automatiquement !




"COQUITO"
Merci, une fois de plus, Michdenis pour cette réponse ultra rapide !
C'est tout à fait ce style de chrono que j'attendais.

Je vais essayer d'adapter ton programme de façon à ce que l'utilisateur
n'ait pas à démarrer lui-même le chrono, car je souhaiterais vraiment que
celui-ci s'enclenche simultanément avec la macro qui tournera en arrière
plan.

Comme cette macro est actuellement lancée via un menu personnalisé, je pense
intercaler une petite procédure qui affichera le UserForm.
Et c'est donc maintenant via la procédure évènementielle UserForm_Activate,
que j'appellerai ma macro.

J'espère que cela va fonctionner et ne pas créer d'incompatibilités
quelconques avec les autres procédures de ton programme.
(Quand j'appelle l'aide en ligne sur "AddressOf" par exemple, je vois que
cela me dépasse un peu ; je n'ai jamais utilisé ces fonctions jusqu'à
maintenant et j'ai donc un peu peur d'introduire "le grain de sable" qui
bloquera tout).

Aussi, puis-je te demander de me dire d'ores et déjà si l'adaptation que
j'envisage est possible ou si je déraille complètement.
Pourrais-tu me dire aussi à quoi correspondent "hWnd" et "nIDEvent" dans la
déclaration de la fonction "KillTimer".
J'aimerais également savoir si les variables "H" et "DS" sont sciemment
déclarées comme étant de type Variant puisqu'elles ne sont pas typées dans
la procédure Chrono.

Je me rends compte de mon exigence avec toutes ces questions, mais le
développement Excel Vba m'intéresse beaucoup et je voudrais tellement
améliorer mes connaissances.

Un grand merci !


"michdenis" news:
Bonjour,

Essaie ceci : http://cjoint.com/?fimauaYaFC

Tu ouvres le formulaire en mode création, et tu indiques le nom de la
macro à exécuter.

Je n'ai pas testé ceci sur une longue macro... je n'en ai pas à ma
disposition !
;-)



"COQUITO" discussion :

Bonjour à tous,

Je souhaiterais afficher un chronomètre pendant qu'une macro Excel vba qui
prend un certain temps s'exécute, ceci dans le but de faire patienter
l'utilisateur.

J'ai utilisé un code trouvé sur un forum pour créer une "horloge" digitale
à
l'aide d'une shape.
Ce chrono fonctionne très bien mais ne permet pas qu'une procédure vba
s'exécute en arrière plan.

J'ai trouvé un exemple utilisant un userform (ce que conseillait fortement
le membre du forum qui apportait sa réponse) et faisant appel à une
fonction
"API" de windows et c'est là que je ne suis plus, car je connais mal ce
domaine.

Suffit-il d'écrire : Public Declare Function GetTickCount& Lib "kernel32"
()
ou faut-il au préalable activer une fonction windows ou excel ?

D'autre part, pour ce chronomètre, je souhaiterais qu'il se mette en
marche
lorsque la procédure vba qui doit s'exécuter en arrière plan démarre et
qu'il s'arrête de lui-même quand le programme vba est arrivé à son terme,
donc, pas de bouton de marche/arrêt.

Je vous remercie par avance si vous pouvez m'aider à réaliser ce
programme.

michdenis
Le #21970851
Une information supplémentaire,

Si tu désires utiliser le formulaire "Chronomètre" pour plus d'une macro,
voici comment faire :

Dans le module1 du fichier, tu déclares dans le haut de celui-ci
une variable "Public" As String
Public Execute_Macro As String

Tu modifies la procédure du module1 comme ceci :
La seule chose à faire est de modifier le nom de la macro
en prenant soin de spécifier le nom du module dans lequel
elle est située.
'--------------------------------
Sub TestChrono()
Execute_Macro = "Module1.MaMacro"
UserForm1.Show
End Sub
'--------------------------------

Et pour finir dans l'userform, tu remplaces cette ligne de code :
Call MaMacro
par ceci :
Application.Run Execute_Macro




"COQUITO"
Merci, une fois de plus, Michdenis pour cette réponse ultra rapide !
C'est tout à fait ce style de chrono que j'attendais.

Je vais essayer d'adapter ton programme de façon à ce que l'utilisateur
n'ait pas à démarrer lui-même le chrono, car je souhaiterais vraiment que
celui-ci s'enclenche simultanément avec la macro qui tournera en arrière
plan.

Comme cette macro est actuellement lancée via un menu personnalisé, je pense
intercaler une petite procédure qui affichera le UserForm.
Et c'est donc maintenant via la procédure évènementielle UserForm_Activate,
que j'appellerai ma macro.

J'espère que cela va fonctionner et ne pas créer d'incompatibilités
quelconques avec les autres procédures de ton programme.
(Quand j'appelle l'aide en ligne sur "AddressOf" par exemple, je vois que
cela me dépasse un peu ; je n'ai jamais utilisé ces fonctions jusqu'à
maintenant et j'ai donc un peu peur d'introduire "le grain de sable" qui
bloquera tout).

Aussi, puis-je te demander de me dire d'ores et déjà si l'adaptation que
j'envisage est possible ou si je déraille complètement.
Pourrais-tu me dire aussi à quoi correspondent "hWnd" et "nIDEvent" dans la
déclaration de la fonction "KillTimer".
J'aimerais également savoir si les variables "H" et "DS" sont sciemment
déclarées comme étant de type Variant puisqu'elles ne sont pas typées dans
la procédure Chrono.

Je me rends compte de mon exigence avec toutes ces questions, mais le
développement Excel Vba m'intéresse beaucoup et je voudrais tellement
améliorer mes connaissances.

Un grand merci !


"michdenis" news:
Bonjour,

Essaie ceci : http://cjoint.com/?fimauaYaFC

Tu ouvres le formulaire en mode création, et tu indiques le nom de la
macro à exécuter.

Je n'ai pas testé ceci sur une longue macro... je n'en ai pas à ma
disposition !
;-)



"COQUITO" discussion :

Bonjour à tous,

Je souhaiterais afficher un chronomètre pendant qu'une macro Excel vba qui
prend un certain temps s'exécute, ceci dans le but de faire patienter
l'utilisateur.

J'ai utilisé un code trouvé sur un forum pour créer une "horloge" digitale
à
l'aide d'une shape.
Ce chrono fonctionne très bien mais ne permet pas qu'une procédure vba
s'exécute en arrière plan.

J'ai trouvé un exemple utilisant un userform (ce que conseillait fortement
le membre du forum qui apportait sa réponse) et faisant appel à une
fonction
"API" de windows et c'est là que je ne suis plus, car je connais mal ce
domaine.

Suffit-il d'écrire : Public Declare Function GetTickCount& Lib "kernel32"
()
ou faut-il au préalable activer une fonction windows ou excel ?

D'autre part, pour ce chronomètre, je souhaiterais qu'il se mette en
marche
lorsque la procédure vba qui doit s'exécuter en arrière plan démarre et
qu'il s'arrête de lui-même quand le programme vba est arrivé à son terme,
donc, pas de bouton de marche/arrêt.

Je vous remercie par avance si vous pouvez m'aider à réaliser ce
programme.

COQUITO
Le #21973141
Alors j'avais vu juste, car c'est bien la solution d'adaptation que j'avais
soumise à ton approbation dans ma précédente réponse : par mon menu actuel
qui pour l'instant lance l'exécution de ma macro, je vais afficher le
formulaire, et c'est dans le UserForm_Activate que j'appellerai ma macro.

Je viens de lire aussi ton information supplémentaire qui pourrait
effectivement m'être fort utile à d'autres occasions et je vais la stocker
précieusement.

Merci encore Denis (et donc aussi à Frédéric Sigonneau dont j'ai vu le nom
bien des fois au gré de mes recherches diverses et variées ...).
Très bonne soirée.



"michdenis" news:
De ton bouton ou ta commande dans ton menu,
tu n'as qu'à appeler une petite macro qui a pour
but de lancer le Formulaire

Sub Ouvrir_Formulaire()
Userform1.Show
End Sub

Et dans le formulaire, tu remplaces "MaMacro" par la macro
que tu veux exécuter dans le classeur.

Tout devrait se faire automatiquement !




"COQUITO" discussion :

Merci, une fois de plus, Michdenis pour cette réponse ultra rapide !
C'est tout à fait ce style de chrono que j'attendais.

Je vais essayer d'adapter ton programme de façon à ce que l'utilisateur
n'ait pas à démarrer lui-même le chrono, car je souhaiterais vraiment que
celui-ci s'enclenche simultanément avec la macro qui tournera en arrière
plan.

Comme cette macro est actuellement lancée via un menu personnalisé, je
pense
intercaler une petite procédure qui affichera le UserForm.
Et c'est donc maintenant via la procédure évènementielle
UserForm_Activate,
que j'appellerai ma macro.

J'espère que cela va fonctionner et ne pas créer d'incompatibilités
quelconques avec les autres procédures de ton programme.
(Quand j'appelle l'aide en ligne sur "AddressOf" par exemple, je vois que
cela me dépasse un peu ; je n'ai jamais utilisé ces fonctions jusqu'à
maintenant et j'ai donc un peu peur d'introduire "le grain de sable" qui
bloquera tout).

Aussi, puis-je te demander de me dire d'ores et déjà si l'adaptation que
j'envisage est possible ou si je déraille complètement.
Pourrais-tu me dire aussi à quoi correspondent "hWnd" et "nIDEvent" dans
la
déclaration de la fonction "KillTimer".
J'aimerais également savoir si les variables "H" et "DS" sont sciemment
déclarées comme étant de type Variant puisqu'elles ne sont pas typées dans
la procédure Chrono.

Je me rends compte de mon exigence avec toutes ces questions, mais le
développement Excel Vba m'intéresse beaucoup et je voudrais tellement
améliorer mes connaissances.

Un grand merci !


"michdenis" news:
Bonjour,

Essaie ceci : http://cjoint.com/?fimauaYaFC

Tu ouvres le formulaire en mode création, et tu indiques le nom de la
macro à exécuter.

Je n'ai pas testé ceci sur une longue macro... je n'en ai pas à ma
disposition !
;-)



"COQUITO" discussion :

Bonjour à tous,

Je souhaiterais afficher un chronomètre pendant qu'une macro Excel vba
qui
prend un certain temps s'exécute, ceci dans le but de faire patienter
l'utilisateur.

J'ai utilisé un code trouvé sur un forum pour créer une "horloge"
digitale
à
l'aide d'une shape.
Ce chrono fonctionne très bien mais ne permet pas qu'une procédure vba
s'exécute en arrière plan.

J'ai trouvé un exemple utilisant un userform (ce que conseillait
fortement
le membre du forum qui apportait sa réponse) et faisant appel à une
fonction
"API" de windows et c'est là que je ne suis plus, car je connais mal ce
domaine.

Suffit-il d'écrire : Public Declare Function GetTickCount& Lib "kernel32"
()
ou faut-il au préalable activer une fonction windows ou excel ?

D'autre part, pour ce chronomètre, je souhaiterais qu'il se mette en
marche
lorsque la procédure vba qui doit s'exécuter en arrière plan démarre et
qu'il s'arrête de lui-même quand le programme vba est arrivé à son terme,
donc, pas de bouton de marche/arrêt.

Je vous remercie par avance si vous pouvez m'aider à réaliser ce
programme.




Publicité
Poster une réponse
Anonyme