Timer pour vba

Soyez le premier à donner votre avis sur cette source.

Vue 39 827 fois - Téléchargée 3 052 fois

Description

Le VBA ne possède pas de contrôle timer, souvent bien pratique (ou alors, je ne l'ai pas trouvé!).
Ce code présente un contrôle activeX Timer créé sous VB et utilisable sous Excel par exemple, à condition de l'enregistrer dans le registre, puis de l'ajouter à la boite à outils contrôles du VBA, ou directement sur une feuille Excel.
Le code comprend le projet activeX du contrôle pour la lecture et la modif éventuelle des propriétés du timer, et qui permet
aussi l'enregistrement du contrôle Timer.ocx dans le registre, ce qui est indispensable pour l'utiliser.
Si on n'a pas VB (!), j'envoie séparemment un autre code VBA Excel qui permet l'enregistrement du contrôle Timer.ocx qui est joint au zip. Il permet aussi l'enregistrement des dll et ocx que l'on peut trouver un peu partout.

Conclusion :


Merci de vos remarques

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

mimiZanzan
Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Salut MAITREGEO,

Je reviens sur ce que j'ai dit: pour avoir un intervalle >1mn, il faut seulement utiliser 1 timer qui appelle une simple procédure contenant un compteur qui déterminea l'intervalle désiré.
Exemple ci-dessous:

Sub MiseEnRoute_Timer()
TimerVBA1.Intervalle = 60000 '1mn
TimerVBA1.Active = True
End Sub

Sub TimerVBA1_Timer()
DéclencheEvent
End Sub

Sub DéclencheEvent() 'procédure appelée chaque mn par le timer
Static compteur As Integer 'variable statique non changée à chaque appel
'on peut aussi la déclarer au niveau module
compteur = compteur + 1 'incrémentation
If compteur = 15 Then
'mettre ici l'évènement à déclencher (toutes les 15mn dans ce cas)
compteur = 0 'remise à 0 du compteur pour les 15 prochaines mn
End If
End Sub

Voilà, c'est donc très simple!...

J'espère vous avoir aidé

Cdt
CognitiKom
Messages postés
1
Date d'inscription
mercredi 23 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016
> mimiZanzan
Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Bonjour à tous

Tout d'abord, merci à Mimizanzan pour ses conseils avisés, sauf que là je suis concé avec l'installation et l'utilisation du timer.
Dans mes feuilles Excel j'ai besoin de modifier la hauteur de la ligne que je survole avec la souris pour faire apparaître des boutons dynamiquement ainsi que des info-bulles contextuelles.
J'ai commencé par le faire via des SetTimer et KillTimer, mais ça plante Excel quasi systématiquement. Pas très drôle...
Je me suis donc orienté vers la solution dont on parle ici, sauf que j'ai un problème :
- j'ai installé le contrôle complémentaire via le petit programme de mimizanzan : ça a marché, sauf que la commande Regsvr32 C:\MesControleActiveX\TimerVBA.ocx me sort un message du style Échec du chargement du module "C:\MesControleActiveX\TimerVBA.ocx". Vérifiez que le fichier [...] dépendants. Le module spécifié est introuvable.
- malgré tout j'ai réussi à définir une nouvelle référence vers TimerPourVBA ainsi qu'un objet "Dim TimerVab1 as TimerVBA" dans un module VBA (donc TimerVBA est bien reconnu)
- mais dans ma feuille Excel quand je veux enregistrer le nouveau contrôle personnalisé TimerVBA.ocx j'ai un message "Échec lors de l'enregistrement du contrôle dans le registre"

Pourriez-vous m'aider, s'il vous plait ? C'est vraiment très important

Ah oui : je suis sous Windows 10 en 64 bits et Office 2013 32 bits.

Un grand merci d'avance
Gilbert
maitregeo
Messages postés
2
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
21 janvier 2013

Merci pour cette aide je vais donc imbriquer deux timer, car il me faut 15mn de délai.
mimiZanzan
Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Salut MAITREGEO

Merci de votre intérêt pour mon timer.
Je vous précise que la limite de 65s s'applique seulement à la fréquence du timer (et non pas à sa durée de vie), fréquence qui déclenche un ou des évènements désirés. Je pense qu'il y a peu de cas où on ait besoin d'exécuter une action à des intervalles de plus de 1mn...
De toute façon, c'est aussi le cas pour le timer VB classique, qui d'ailleurs a servi pour développer mon ocx.
Sinon, il faut utiliser 2 timers reliés avec par exemple un compteur pour augmenter l'intervalle, ou bien créer le timer avec la fonction API SetTimer (voir comme exemple mon code FEU D'ARTIFICE SOUS EXCEL VBA) qui supporte des intervalles beaucoup + grands.
Voilà, j'espère que ceci vous aidera.

Cdt
maitregeo
Messages postés
2
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
21 janvier 2013

Bonjour MIMIZANZAN,

Votre timer est parfait à un détail près, la limite de 65535 n'autorise qu'un laps de temps de 65 seconde comment faire pour changer cela.

Merci de votre réponse.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.