dysorthographie
XLDnaute Barbatruc
📘 Manuel développeur – Timer COM pour Excel VBA (TimerRd)
🔧 1. Objectif
La bibliothèqueTimerRd 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 :
- Compiler la DLL
TimerRd.dll - 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
- Ouvrir l’éditeur VBA (
🧱 3. Architecture
Classes principales :
| Élément | Rôle |
|---|---|
CTimer | Implémentation du timer |
IComTimer | Interface publique |
IComTimerEvents | Interface 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 :
- Création du timer
- Définition de l’intervalle
- Appel de
Start - Réception des événements
Tic - Appel de
Stoppour arrêter
📌 6. Propriétés
Interval
- Type :
Long - Unité : millisecondes
- Minimum :
1
Code:
T.Interval = 10 ' 10 ms = 0,01 seconde
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
Stop()
- Arrête le timer
- Libère les ressources
⚠️ Toujours appeler
Stop avant fermeture🔔 8. Événement
Tic(TickCount As Integer)
Déclenché à chaque intervalleTickCount= nombre de ticks depuisStart
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
| Intervalle | Risque |
|---|---|
| < 10 ms | surcharge CPU |
| 10–50 ms | rapide mais stable |
| > 100 ms | usage 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èmeInterval= fréquenceStart/Stop= contrôleTic= événement cléWithEvents= obligatoire en VBA
Pièces jointes
Dernière édition: