Programme VBA actualisé

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
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. 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.
    1. 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
    2. @Nico0044Et 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.
    3. @Stéphane AscoëtOui mais je suis assez novice et je n'ai jamais utilisé ce genre de boucle, peux-tu me donner la boucle stp.
    4. @Nico0044Désolé, je n'ai pas que ça à faire. Renseigne toi sur les boucles while, for, until, etc.
  2. 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
    1. 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.
  3. 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