XL 2010 VBA - Macro fin de mois et heure fixe

  • Initiateur de la discussion Initiateur de la discussion romubzh35
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

romubzh35

XLDnaute Occasionnel
Bonjour,
je voudrais exécuter une macro le dernier jour ouvré du mois à minuit, et cela, tous les mois.
pourriez vous m'aider sur le sujet.
le but est de remplacer le bouton Archive et que cette macro se lancer automatiquement
la macro qui fonctionne avec le bouton est la suivante :

Code:
Sub copie_feuilleokdemcharg()
    Dim nom$
    nom = "OK DEM CHARG - " & UCase(MonthName(Month(Date))) & "-" & Year(Date)
    Application.ScreenUpdating = False
    On Error Resume Next
    Worksheets(nom).Activate
    If Err.Number <> 0 Then
        Worksheets("OK DEM CHARG").Copy after:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = nom
        Worksheets("OK DEM CHARG").Select
        Worksheets("OK DEM CHARG").Range("A8:AF60000").ClearContents

     End If
End Sub
merci d'avance pour votre aide
Capture.JPG
 
Bonjour romubzh

Si j'ai bien compris.

Public Sub Fin_Mois()
If Date = Range("ak2").Value And Now() = Range("ak3") Then Call copie_feuilleokdemcharg
End Sub

Mais, dis moi une chose, est-ce que le classeur est ouvert avant minuit?? 🙄

Edit: voici une macro de pierrejean pour afficher la fin d'un mois, change le nom de la feuille. À mettre dans un module standard.

VB:
Sub test()
Dim dt1 As Date
    With Feuil2
        dt1 = .Range("ah1").Value
        .Range("ak2") = derjourb(CDate(dt1))
    End With
End Sub

Function derjourb(LaDate As Date)
    If Month(LaDate) = 12 Then
        derjourb = CDate("01/01/" & Year(LaDate) + 1) - 1
    Else
        derjourb = CDate("01/" & Month(LaDate) + 1 & "/" & Year(LaDate)) - 1
    End If
End Function
 
Dernière édition:
Bonsoir le fil, le forum

Une autre manière de trouver le dernier jour
VB:
Sub ThisIsTheEnd_ofTheMonth()
'Doors tribute ;-)
'en une seule fois
MsgBox CDate(DateSerial(Year(Date), Month(Date) + 1, 0))
'ci dessous avec un fonction
MsgBox DernierJ("05/12/2018")
End Sub
Function DernierJ(D As Date)
DernierJ = CDate(DateSerial(Year(D), Month(D) + 1, 0))
End Function
 
Bonjour le fil, JM, Love-Wolf,
C'est bien beau de trouver quand envoyer la macro, mais si on veux pas faire lever à minuit notre ami Romu...
pour cliquer sur le bouton vous avez oubliés de mentionner la méthode Application.OnTime qui le permet.
Bruno
 
bonjour,
et non je vais pas me lever pour lancer la macro 🙂
le but est de tout automatiser si c'est possible
le dernier jour ouvré j'avais la formule
l'heure choisie est minuit
ce qu'il me manque est le morceau de code avec
Application.OnTime
ou l'on fait mention du jour et de l'heure choisie
merci d'avance
 
Hhhaa!! Lone-wolf t'as plus d'un tour dans ton sac.
Je profite de l'instant..... si tu veux mettre Poker Game sur le site je te laisse faire peut être sans la musique pour alléger.
Bruno

Edit: message croisé
écris Application.ontime dans l'éditeur et presse F1 tu auras facilement tout les renseignements.
 
Bon je donne un coup de pouce car pas si simple tout de même
ce code à copier dans module1 ou autre (non testé)
Bruno
VB:
Public mydate As Date
Sub My_Minuit()
'ta macro de minuit sera exécutée ici le 1er jour du mois à la 1ère seconde
'ici ta macro
mydate = CDate(DateSerial(Year(Date), Month(Date) + 1, 0)) + 1
mydate = mydate + "00:00:01"
MsgBox mydate
Application.OnTime mydate, "My_Minuit"
End Sub
Sub Annule_My_minuit()
Application.OnTime EarliestTime:=mydate, _
Procedure:="My_Minuit", Schedule:=False
End Sub
 
bonjour Bruno
et merci encore pour ton aide
je viens de copier le code dans le module 1
lorsque je lance pour faire l'essai j'obtiens une fenêtre ou est indiqué 01/05/2108 à 00:00:01
quand tu mets "'ici ta macro" je dois ajouter ma macro à cet endroit on est d'accord ?
j'ajoute juste un call...
 
Oups! supprime la ligne en faute c'était juste pour mes essais.
Oui tu copies ta macro à cet endroit.
à l'endroit de ta macro tu peux simplement mettre le nom de ta macro avec ou sans Call
La macro doit s'exécuter le 1er du mois c'est déjà parti si tu n'arrêtes pas le PC si tu là modifie fait la macro Annule_My_minuit et reExécute My_Minuit
Bruno
 
Bonsoir le fil, le forum, Mon Voisin 😉 , Lone-Wolf, youky(BJ)

Si le classeur est ouvert 24h/24h c'est que le PC l'est aussi donc.

Dans ce cas, pourquoi ne pas simplement utiliser le planificateur de tâches de Windows?
(avec une tache qui s’exécute le 1er jour du mois à minuit)
Voir ici par exemple pour plus de détails
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
302
Réponses
1
Affichages
1 K
Retour