Vba pour macro qui s'execute toutes les 30minutes
Cami13
-
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
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:
- Vba pour macro qui s'execute toutes les 30minutes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Excel compter cellule couleur sans vba - Guide
- Arreter une macro vba ✓ - Forum VB / VBA
2 réponses
Bonjour
Dans le module du ThisWorkbook :
Et dans un module classique :
Cordialement
Patrice
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
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
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
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
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.
http://www.info-3000.com/vbvba/cours/lecon004/lecon004.php
https://www.lecompagnon.info//vba-excel/vba_vbe.htm#.VUfwefCuTuM
Un trés bon cours VBA
https://bidou.developpez.com/article/VBA/
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).
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