Bonjour,

Voila le code de mon module. Le module efface 3 tables par lintermediaire dune requete prevu dans une macro.Ensuite, le module importe 3 fichiers excel dans des tables.

Le but du module est de maintenir à jour toutes les 5 secondes 3 tables.

Le module se lance lorsque lon clique sur un bouton.

J'aimerai qu'une fois le bouton cliqué, le code du module il se relance toutes les 5 secondes.

voici le code:

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub PROC()
 
 
      Dim stDocName As String
Application.OnTime Now + TimeValue("00:00:05"), "PROC"
    stDocName = "SUPRESSION"
    DoCmd.RunMacro stDocName
 
    ArticleParFamille = "U:\lien.xls" 'Chemin d'access du fichier
 
strArticleParFamille = "liens"
 
 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, strArticleParFamille, ArticleParFamille, True, ""
 
    ArticleParFamille2 = "U:\Devises.xls" 'Chemin d'access du fichier
 
strArticleParFamille2 = "Devises"
 
 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, strArticleParFamille2, ArticleParFamille2, True, ""
 
    ArticleParFamille3 = "U:\Valeur Produit.xls" 'Chemin d'access du fichier
 
strArticleParFamille3 = "Valeur Produit"
 
 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, strArticleParFamille3, ArticleParFamille3, True, ""
 
 
 
 
End Sub
cest cette partie qui empeche le lancement de la suite du module car si je lenleve limportation se passe bien mais avec ca, ca ne fait rien du tout:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Application.OnTime Now + TimeValue("00:00:05"), "PROC"

Jai trouvé ca:
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
20
21
22
23
Dim Lheure As Double
Dim Interval As Integer
 
Public Sub LancerTimer(NbS As Integer)
      'L'application ExecutionTimer se lancera toutes les 0 heure, 0 minute et Interval seconde
      Interval = NbS
      ' la ligne suivante va lancer la procédure ExecutionTimer tous les intervalles secondes
      Application.OnTime Now + TimeSerial(0, 0, Interval), "ExecutionTimer"
End Sub
 
Public Sub ArretTimer()
      'Pour arrêter le timer, il suffit d'appeler cette procédure.
On Error Resume Next
      Application.OnTime Lheure, "ExecutionTimer", , False
End Sub
 
Public Sub ExecutionTimer()
      'code à exécuter à la fin de chaque Interval secondes
            'mettez ici votre code
      'code obligatoire 
      Lheure = Now + TimeSerial(0, 0, Interval)
      Application.OnTime Lheure, "ExecutionTimer"
End Sub
Mais je narrive pas à le faire fonctionner.

Jai fait:

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
20
21
22
23
Dim Lheure As Double
Dim Interval As Integer
 
Public Sub LancerTimer(NbS As Integer)
      'L'application ExecutionTimer se lancera toutes les 0 heure, 0 minute et Interval seconde
      Interval = 5
      ' la ligne suivante va lancer la procédure ExecutionTimer tous les intervalles secondes
      Application.OnTime Now + TimeSerial(0, 0, Interval), "ExecutionTimer"
End Sub
 
Public Sub ArretTimer()
      'Pour arrêter le timer, il suffit d'appeler cette procédure.
On Error Resume Next
      Application.OnTime Lheure, "ExecutionTimer", , False
End Sub
 
Public Sub ExecutionTimer()
      'code à exécuter à la fin de chaque Interval secondes
            'mettez ici votre code
      'code obligatoire 
      Lheure = Now + TimeSerial(0, 0, Interval)
      Application.OnTime Lheure, "ExecutionTimer"
End Sub