Programme VBA actualisé

Nico0044 -  
Polux31 Messages postés 7219 Statut Membre -
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. Stéphane Ascoët
     
    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
    1. Nico0044
       
      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
      1. Stéphane Ascoët > Nico0044
         
        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
      2. Nico0044 > Stéphane Ascoët
         
        Oui mais je suis assez novice et je n'ai jamais utilisé ce genre de boucle, peux-tu me donner la boucle stp.
        0
      3. Stéphane Ascoët > Nico0044
         
        Désolé, je n'ai pas que ça à faire. Renseigne toi sur les boucles while, for, until, etc.
        0
  2. Nada
     
    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
    1. Stéphane Ascoët
       
      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
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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