Macro à la première et seulement la première fermeture de la semaine

Bonjour j'aimerai savoir si c'était possible d'éxécuter une macro à la première fermeture du fichier dans la semaine.

Par exemple si j'ouvre le fichier le lundi matin et que je le referme la macro s'effectue, mais si le lundi je ne suis pas là, et que je reviens que le mercredi je veux que la macro s'effectue quand même.

Complication si la macro a déjà fonctionné cette semaine je ne dois pas refaire tourner la macro.

Donc je dois avoir un moyen de la faire tourner une seul et unique fois par semaine

lors de la première fermeture du fichier

Bonjour,

pour cela, il faut enregistrer dans le fichier la date de la dernière sauvegarde et au moment de la fermeture du fichier, vérifier si cette date est dans la semaine en cours, si oui ne rien faire sinon, exécuter la macro et mettre à jour la date d'exécution de la macro puis sauver le classeur.

par exemple (date sauvegardée sur feuille sheet1 en A1).

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Application.WeekNum(Sheets("sheet1").Range("A1")) <> Application.WeekNum(Date) Then
        ' executer la macro
        Sheets("sheet1").Range("A1") = Date 'mettre à jour la date
    End If
End Sub

Bonjour,

Bonjour h2so4,

Une autre proposition (identique ?).

Cdlt.

24naubin1.xlsm (20.71 Ko)

salut et merci

Jean-eric j'ai un message d'erreur sur ton fichier

et h2so4 je vais tester ça

2018 07 12 13 34 13

Re,

Pas de souci chez moi.

Ou est enregistré le fichier ? Si c'est à la première ouverture du fichier, réouvre le fichier !...

Cdlt.

niquel

Bonjour à tous,

j'ai essayé de m'inspirer de cette conversation pour effectuer une macro similaire...

le but étant d'exécuter une macro uniquement à la première ouverture de la journée. Sauf qu'avec mon code ça ne fonctionne pas

dans le rectangle 12 j'ai la date du dernier export qui doit toujours correspondre à la veille. donc si j'ouvre le classeur le 14.01.2021 la date inscrite dans le rectangle 12 est automatiquement le 13.01.2021(valeur récupérée en query) si le fichier a été actualiser. et j'aimerai qu'il s'actualise uniquement à la première ouverture car cette mise à jour prend un peu de temps et les valeurs restent ensuite toujours les même pour toute la journée. Donc pas besoin d'actualiser à chaque fois.

Private Sub Workbookopen(Cancel As Boolean)
    If Application.Date(Sheets("comparaison").Shape("rectangle 12") <> Application.Date(Date) - 1) Then
        this Workbook.RefreshAll
    End If
End Sub

pouvez-vous m'éclairer svp ?

Merci !! :)

Bonjour,

une correction de la syntaxe.

Private Sub Workbook_Open()
    If Application.Date(Sheets("comparaison").Shape("rectangle 12") <> Application.Date(Date) - 1) Then
        ThisWorkbook.RefreshAll
    End If
End Sub

la logique semble correcte sur base du code, mais elle dépend également de la manière dont ton classeur est organisé (vue que nous n'avons pas).

Bonjour h2so4,

Merci pour votre réponse, voici le code qui me permet d'actualiser le document à l'ouverture si la date ne correspond pas.

Private Sub workbook_open()
    If Sheets("comparaison").Shapes("Rectangle 12").TextFrame.Characters.Text <> Format(Date - 1, "dd.mm.yyyy") Then
        ThisWorkbook.RefreshAll
    End If
End Sub

Merci beaucoup pour votre aide !!

Rechercher des sujets similaires à "macro premiere seulement fermeture semaine"