Programme VBA actualisé

Fermé
Nico0044 - 1 avril 2008 à 10:14
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 14 mai 2008 à 11:59
Bonjour,
j'ai un programme sous VBA et j'aimerais qu'il se répète toutes les 10 min par exemple automatiquement.
Voici mon programme

Private Sub form_load()
Dim i As Integer, fin As Integer
ActiveCell.SpecialCells(xlLastCell).Select
fin = ActiveCell.Row
Range("A1").Select
For i = 1 To fin
If Range("C" & i).Value = 0 Then
Range(i & ":" & i).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid

End With
End If
Next
Range("A1").Select
End Sub

3 réponses

Stéphane Ascoët
1 avril 2008 à 14:07
Je ne vois pas d'autre solution que de mettre le code dans une boucle se déclenchant toutes les 10 minutes, vu que l'inénarrable OS micro$oft ne propose pas de programmation de tâches fiable.
0
merci pour ta réponse Stéphane mais quel est ce programme qui permet d'actualiser toutes les 10 min??
Voici mon programme:

Private Sub Séléctionligne()
Dim i As Integer, fin As Integer
ActiveCell.SpecialCells(xlLastCell).Select
fin = ActiveCell.Row
Range("A1").Select
For i = 1 To fin
If Range("C" & i).Value = 0 Then
Range(i & ":" & i).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid

End With
End If
Next
Range("A1").Select
End Sub
0
Stéphane Ascoët > Nico0044
2 avril 2008 à 08:40
Et bien tu entoures ton code par une boucle commençant avant ActiveCell et se finissant après le Range. Utilises une fonction renvoyant le temps pour la cadencer.
0
Nico0044 > Stéphane Ascoët
2 avril 2008 à 08:51
Oui mais je suis assez novice et je n'ai jamais utilisé ce genre de boucle, peux-tu me donner la boucle stp.
0
Stéphane Ascoët > Nico0044
2 avril 2008 à 08:59
Désolé, je n'ai pas que ça à faire. Renseigne toi sur les boucles while, for, until, etc.
0
Stéphane Ascoët dis lui que tu sais pas, c pas grave
ton idée est bonne mais pour la réaliser c pas aussi simple que ça
une boucle avec un timer !!! ouais mais comment
0
Stéphane Ascoët
14 mai 2008 à 11:52
Ben si, à sa place j'y arriverai. C'est mon travail de faire ce genre de choses tous les jours! Mais l'attitude des nouveaux internautes est insupportable: il faut que tout leur tombe dans le bec! Contrairement à ce que tu dis, c'est très facile. Il suffit de mesurer le temps, lorsqu'il dépasse le temps voulu, on affecte un booleen, ce qui déclenche l'exécution du code voulu. À la fin, celui-ci remet le booléen à 0.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
14 mai 2008 à 11:59
bonjour,

Le timer n'existe pas en vba. Il faut donc passer par l'heure système pour en programmer un.

Dans un module tapez le code suivant :

Dim Lheure As Double
Dim Interval as Integer

Sub LancerTimer(NbS as integer)
'L'application ExecutionTimer se lancera toutes les 0 heure, 0 minute et Interval seconde
   Interval =NbS
   Application.OnTime Now + TimeSerial(0, 0,Interval ), "ExecutionTimer"
End Sub

Sub ArretTimer()
   On Error Resume Next
   Application.OnTime Lheure, "ExecutionTimer", , False
End Sub

Sub ExecutionTimer()
'code à exécuter à la fin de chaque Interval secondes

'code obligatoire
   Lheure = Now + TimeSerial(0, 0, Interval )
   Application.OnTime Lheure, "ExecutionTimer"
End Sub

Vous lancez le timer en appelant la procédure LancerTimer(N), puis elle exécute le code de ExecutionTimer toutes les N secondes et enfin, vous l'arrêter avec ArretTimer.

On peut trouver ce code ici : http://www.cathyastuce.com/vba/ex_fonctions_ex.php

;o)

polux
0