A voir également:
- Vba pour macro qui s'execute toutes les 30minutes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Excel compter cellule couleur sans vba - Guide
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
Modifié par Patrice33740 le 4/05/2015 à 15:10
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
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
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
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
4 mai 2015 à 21:19
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
5 mai 2015 à 00:16
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.
Modifié par Patrice33740 le 5/05/2015 à 00:28
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/
5 mai 2015 à 00:36
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).
5 mai 2015 à 09:27
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