Alerte si macro déjà exécutée dans la journée

CAP

XLDnaute Occasionnel
Bonjour le forum,

J'aimerais qu'un message d'alerte soit donné à l'exécution d'une macro si elle a déjà été exécutée dans la journée.
Selon qu'on confirme ou non, la macro est à nouveau exécutée ou non.

Quelqu'un peut-il m'aider ?

Merci par avance et bonne journée!

CAP
 

MichelXld

XLDnaute Barbatruc
bonjour


cet exemple permet d'enregistrer la date du jour dans le champ 'commentaire' (Comments) des propriétés du classeur lors de lancement de la macro

si tu relances la procedure et que la date du jour n'a pas changé , une boite de dialgue demande la confirmation pour continuer
bien sur il ne s'agit que d'un exemple et tu peux aussi enregistrer le date directement dans une cellule du classeur



Sub controleUtilisationMacro()
Dim Cible As String
Dim Reponse As Integer

Cible = ThisWorkbook.BuiltinDocumentProperties('Comments').Value

If Cible = Date Then _
Reponse = MsgBox('deja éxécuté aujourd'hui' & vbLf & _
'Voulez vous continuer ?', vbYesNo)

If Reponse = vbNo Then Exit Sub

ThisWorkbook.BuiltinDocumentProperties('Comments').Value = Format(Date, 'dd/mm/yyyy')
'ThisWorkbook.Save 'sauvegarder la date de lancement de la procedure
'
'
'...la suite de la procedure...
'
End Sub





bon apres midi
MichelXld

Message édité par: michelxld, à: 08/12/2005 15:19
 

john

XLDnaute Impliqué
Bonjour,

Voici une petite modification au code donné parMichelXld

Sub controleUtilisationMacro()
Dim Cible As String
Dim Reponse As Integer

Cible = ThisWorkbook.BuiltinDocumentProperties('Comments').Value

If Cible = Format(Date, 'dd/mm/yyyy') Then _
Reponse = MsgBox('deja éxécuté aujourd'hui' & vbLf & _
'Voulez vous continuer ?', vbYesNo)

If Reponse = vbNo Then Exit Sub

ThisWorkbook.BuiltinDocumentProperties('Comments').Value = Format(Date, 'dd/mm/yyyy')
'ThisWorkbook.Save 'sauvegarder la date de lancement de la procedure
'
'
'...la suite de la procedure...
'
End Sub
car tout dépend du format de la date, mais moi pour la date j'ai le 8/12/2005 et dans mes commentaires j'ai 08/12/2005 donc différent de la date !!

Bien à vous.

John
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour CAP, bonjour à toutes et à tous :)

Voici un exemple de code que tu peux utiliser (en passant par un nom) :

Sub MacroAExecuter()
'
Dim DejaExecutee As Boolean
'
  For i = 1 To ActiveWorkbook.Names.Count
    With ActiveWorkbook.Names(i)
      If .Name = 'Exec' Then
        If DateValue([Exec]) = DateValue(Now) Then
          DejaExecutee = True
        End If
      End If
    End With
  Next
  If Not DejaExecutee Then
    ActiveWorkbook.Names.Add Name:='Exec', RefersToR1C1:='=''' & DateValue(Now) & ''''
  Else
    reponse = MsgBox('Macro déjà exécutée ce jour.' & vbNewLine & _
    'Voulez-vous l'exécuter à nouveau ?', vbYesNo)
    If reponse = vbNo Then Exit Sub
  End If

  ' ...
  ' Ton code
  ' ...


End Sub

A+
Charly

Edition : Oups ! Bonjour Michel et John, je ne vous avais pas vus :)

Message édité par: Charly2, à: 08/12/2005 15:45
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25