Vba pour macro qui s'execute toutes les 30minutes

Fermé
Cami13 - 4 mai 2015 à 14:08
 Cami13 - 5 mai 2015 à 09:57
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
A voir également:

2 réponses

Patrice33740 Messages postés 8559 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 13 mars 2025 1 779
Modifié par Patrice33740 le 4/05/2015 à 15:10
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
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
Patrice33740 Messages postés 8559 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 13 mars 2025 1 779
5 mai 2015 à 00:16
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
Patrice33740 Messages postés 8559 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 13 mars 2025 1 779
Modifié par Patrice33740 le 5/05/2015 à 00:28
0
Patrice33740 Messages postés 8559 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 13 mars 2025 1 779
5 mai 2015 à 00:36
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
Cami13 > Patrice33740 Messages postés 8559 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 13 mars 2025
5 mai 2015 à 09:27
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
Patrice33740 Messages postés 8559 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 13 mars 2025 1 779
5 mai 2015 à 09:52
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