Vba pour macro qui s'execute toutes les 30minutes

Cami13 -  
 Cami13 -
Bonjour
et merci pour votre aide
j'ai ce code dans ma feuille Excel (dans ThisWorkbook)

Private Sub Workbook_Open()

Application.OnTime TimeValue("09:05:00"), "Macro 1"
End Sub

j'aimerais que ma macro qui démarre a 09:00:05 se répète toutes les 30 minutes et que le processus s'arrête le soir a 17h35(c'est moi qui ouvre mon classeur et il reste ouvert toute la journée)
merci de votre aide

Cordialement CM bonne journée a tous

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour

    Dans le module du ThisWorkbook :
    Private Sub Workbook_Open()
      Call MaMacro
    End Sub
    

    Et dans un module classique :
    Option Explicit
    Option Private Module
    Private Const heure_déb As Date = #9:05:00 AM#
    Private Const heure_fin As Date = #5:35:00 PM#
    
    Public Sub MaMacro()
      If Time < heure_déb Then
        Application.OnTime début, "MaMacro", heure_fin
        Exit Sub
      ElseIf Time < heure_fin Then
        Application.OnTime Now + TimeValue("00:30:00"), "MaMacro", heure_fin
      End If
      'Ici le code à exécuter ...
      MsgBox "MaMacro s'execute à " & Time
    
    End Sub

    Cordialement
    Patrice
    2
    1. Cami13
       
      Bonsoir Patrice
      merci de votre réponse
      je n'ai jamais fait de VBA encore
      pouvez vous me préciser, le module classique correspond il a Module lorsque vous allez dans insertion ou bien a module de classe?
      le code a exécuter est bien le code de ma macro ( faut il copier sub et end sub lorsque je recopie ce code tel que vous l"avez spécifié dans l'emplacement(juste le code??? )
      enfin j'ai vu que vous avez marqué Now +Application.OnTime TimeValue("00:00:15") cela correspond a un changement toutes les 15 secondes si je veux toutes les demi heures je suppose que je n'ai qu'a rentrer 00:30:00
      enfin merci de me dire si j'ouvre le classeur dans la journée après 09:05:00 que se passe t'il .la macro se mettra t'elle en route et sur quelle base 'reprendra t'elle ; si le classeur avait été ouvert au début (par exemple si le classeur est ouvert en retard a 09:20:00(15minutes de retard), la macro se déclenchera t'elle a 09:35:00 si j'ai défini l'intervalle a 30 minutes??
      merci ;j'espère que vous comprendrez que c'est un peu difficile pour quelqu'un qui débute
      cordialement CM
      Caminade Michel
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Re,

      Dans l'Editeur Visual Basic :
      Affichage / Explorateur de projet

      Pour accéder au Module de classeur : double clic sur Thisworkbook
      Copier le code le 1° code cidessus / coller dans ThisWorkbook

      puis Insertion / Module
      et double clic sur Module1
      Copier le 2° code ci-dessus / puis Coller dans le module.
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      si le classeur est ouvert en retard a 09:20:00(15minutes de retard), la macro se déclenchera t'elle a 09:35:00 si j'ai défini l'intervalle a 30 minutes??
      D'abord la macro se déclenche à l'ouverture du fichier (9h20) puis toutes les 30 minutes et elle s'arrête vers 17h35 (-29/+0).
      Avec un code différent, on pourrais déclencher la macro à heure fixe (mais ce n'était pas la demande).
      0
    4. Cami13 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour
      merci de votre patiente
      j'essaye comme je peux ,avec pour le moment ce que je sais
      j'ai collé le 1er code dans thisworkbook comme ci dessous
      Private Sub Workbook_Open()
      Call PB
      End Sub
      lorsque j'ouvre le classeur un message affiche
      erreur de compilation nom ambigu détecté??
      voila ma macro elle est dans le module 20 du classeur
      je suis incapable de vous donner les raisons du message
      si je mets des guillemets a "PB" comme ceci ca s'affiche en rouge donc je les ai enlevé


      Sub PB()
      '
      ' PB Macro
      '

      '
      ActiveWindow.LargeScroll ToRight:=3
      Range("EE12:EE51").Select
      Selection.Copy
      Range("EE12").Select
      Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
      SkipBlanks:=False, Transpose:=False
      Range("EH12:EH51").Select
      Application.CutCopyMode = False
      Selection.Copy
      Range("EH12").Select
      Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
      SkipBlanks:=False, Transpose:=False
      Application.CutCopyMode = False
      ActiveWindow.LargeScroll ToRight:=1
      ActiveWindow.Panes(2).Activate
      Range("EK10:EX11").Select
      Selection.Copy
      ActiveWindow.LargeScroll ToRight:=-1
      Range("EL10:EL11").Select
      ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
      IconFileName:=False
      Range("EK9").Select
      ActiveWindow.Panes(4).Activate
      Range("EK12:EX51").Select
      Selection.Copy
      ActiveWindow.LargeScroll ToRight:=-1
      Range("EL12").Select
      ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
      IconFileName:=False
      ActiveWindow.LargeScroll ToRight:=-1
      Range("EG12:EG51").Select
      Selection.Copy
      Range("EK12").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Application.CutCopyMode = False
      ActiveWindow.Panes(2).Activate
      Range("EG10:EG11").Select
      Selection.Copy
      Range("EK10").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Application.CutCopyMode = False
      ActiveWindow.LargeScroll ToRight:=-3
      ActiveWindow.Panes(4).Activate
      Range("DE54").Select

      ActiveWindow.SmallScroll ToRight:=1
      End Sub
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    1) erreur de compilation nom ambigu détecté
    Effectivement PB est un nom ambigu pour Excel, il ne sait pas si il s'agit de la procédure que tu as nommé PB ou de la colonne PB de la feuille active, d'où l'importance de choisir des noms de de variables et d'objets qui ne pose aucune ambiguïté et qui facilite la lecture du code.

    2) Ton code est directement issu de l'enregistreur de macro, il comporte de très nombreuses instructions inutiles : lorsque tu enregistres une macro, il est très important de se préparer avant pour ne faire que les opérations strictement nécessaires. Ensuite il faudra simplifier ton code mais pour cela, je t'invite à consulter le cours que je t'ai indiqué ci-dessus
    0