Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Une DLL qui ajoute un timer simple et efficace à la millisecondes à VBA.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dysorthographie

XLDnaute Barbatruc

📘 Manuel développeur – Timer COM pour Excel VBA (TimerRd)​

🔧 1. Objectif​

La bibliothèque TimerRd fournit un timer COM utilisable en VBA permettant d’exécuter du code à intervalles réguliers (comme un setInterval en JavaScript).
Contrairement à Application.OnTime, ce timer est :
  • plus précis
  • événementiel (basé sur WithEvents)
  • facilement contrôlable (Start / Stop / Interval)

⚙️ 2. Installation​

Étapes :​

  1. Compiler la DLL TimerRd.dll
  2. Enregistrer la DLL avec RegAsm.exe :
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "C:\MyRep\TimerRd.dll" /tlb /codebase
    • Ouvrir l’éditeur VBA (ALT + F11)
    • Menu Outils > Références
    • Ajouter la référence à TimerRd

🧱 3. Architecture​

Classes principales :​

ÉlémentRôle
CTimerImplémentation du timer
IComTimerInterface publique
IComTimerEventsInterface des événements
TicÉvénement déclenché à chaque intervalle

🚀 4. Utilisation de base en VBA​

Exemple complet :​

Code:
Dim WithEvents T As TimerRd.CTimer

Private Sub UserForm_Initialize()
    Set T = New TimerRd.CTimer
    T.Interval = 100   ' 100 ms
    T.Start
End Sub

Private Sub T_Tic(ByVal TickCount As Integer)
    Label1.Caption = TickCount
End Sub


⏱️ 5. Fonctionnement​

Cycle :​

  1. Création du timer
  2. Définition de l’intervalle
  3. Appel de Start
  4. Réception des événements Tic
  5. Appel de Stop pour arrêter

📌 6. Propriétés​

Interval

  • Type : Long
  • Unité : millisecondes
  • Minimum : 1
Code:
T.Interval = 10   ' 10 ms = 0,01 seconde
✔ Modifiable à chaud (pendant l’exécution)


IsRunning

  • Type : Boolean
  • Indique si le timer est actif
Code:
If T.IsRunning Then
  MsgBox "Le timer tourne"
End If


▶️ 7. Méthodes​

Start()

  • Démarre le timer
  • Réinitialise le compteur
T.Start


Stop()

  • Arrête le timer
  • Libère les ressources
T.Stop
⚠️ Toujours appeler Stop avant fermeture


🔔 8. Événement​

Tic(TickCount As Integer)

Déclenché à chaque intervalle

  • TickCount = nombre de ticks depuis Start
Code:
Private Sub T_Tic(ByVal TickCount As Integer)
  Debug.Print TickCount
End Sub


🧠 9. Bonnes pratiques​

✔ Toujours utiliser WithEvents

Sinon aucun événement ne sera reçu.


✔ Libérer le timer​

Code:
Private Sub UserForm_Terminate()
T.Stop
    Set T = Nothing
End Sub


✔ Éviter les intervalles trop faibles​

IntervalleRisque
< 10 mssurcharge CPU
10–50 msrapide mais stable
> 100 msusage standard

⚠️ 10. Limitations​

  • Fonctionne sur le thread principal d’Excel (STA)
  • Dépend du message loop Windows
  • Pas temps réel strict (Windows Forms Timer)

🔍 11. Cas d’usage​

✔ Animation de formulaires
✔ Chronomètre
✔ Polling de données
✔ Surveillance d’état
✔ Mise à jour UI temps réel



🧪 12. Exemple avancé : chronomètre​

Code:
Dim WithEvents T As TimerRd.CTimer
Dim startTime As Double

Private Sub UserForm_Initialize()
    Set T = New TimerRd.CTimer
    T.Interval = 100
    startTime = Timer
    T.Start
End Sub

Private Sub T_Tic(ByVal TickCount As Integer)
    Label1.Caption = Format(Timer - startTime, "0.00") & " s"
End Sub


🏁 13. Résumé​

  • CTimer = cœur du système
  • Interval = fréquence
  • Start/Stop = contrôle
  • Tic = événement clé
  • WithEvents = obligatoire en VBA

 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…