XL 2016 macro à l'ouverture d'un fichier avec test en fonction de la date

labouil

XLDnaute Nouveau
Bonjour,
je cherche à lancer une macro à l'ouverture d'un fichier Excel avec un test sur la date.
Le but :
-à l'ouverture du fichier "monfichier", tester la date du jour par rapport à une date enregistrée sur la "Feuil1" en "K1" ;
- si la date du jour est égale à la date en "K1", ne rien faire ;
- si la date du jour est différente de la date en "K1", cela veut dire que c'est la première fois que "monfichier" est ouvert aujourd'hui donc :
-> exécuter macro "mamacro"
-> mettre la date du jour dans" K1"
-> enregistrer
Problème : je ne fais pratiquement pas de VBA donc c'est un peu complexe pour moi.
Si quelqu'un peu m'apporter son aide, merci d'avance.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @labouil et bienvenue sur XLF :),

Voir le code ci-dessous dans le module de code de ThisWorkbook:
VB:
Private Sub Workbook_Open()      's'exécute à chaque ouverture du classeur
   With Sheets("Feuil1")
      If .[k1] = Date Then Exit Sub  'si la valeur de K1 est la date du jour, on quitte
      .[k1] = Date    'on inscrit la date du jour dans K1
      ThisWorkbook.Save    'on sauvegarde le classeur
      'on affiche une information - la ligne suivante peut être supprimée (c'est pour l'exemple)
      MsgBox "Première ouverture du jour, mise à jour K1 et sauvegarde.", vbInformation
   End With
End Sub

edit : avec les commentaires...

edit : il se peut que le fichier téléchargé et non sauvegardé aboutisse à une erreur en fonction des options de sécurité en vigueur sur votre système. Dans ce cas, enregistrez le fichier et ouvrez le. Si vous voulez que le programme ne s'arrête pas sur une erreur et informe l'utilisateur de l’impossibilité de sauvegarder, demandez moi.

edit : bonjour @job75 :). Pas de problème pour le rafraichissement de XLD, ça m'arrive très régulièrement aussi. "Abondance de biens ne nuit pas", comme on dit.
 

Pièces jointes

  • Labouil- ouvert ou pas- v1.xlsm
    14.5 KB · Affichages: 9
Dernière édition:

cathodique

XLDnaute Barbatruc
Bonjour,

Bienvenue sur XLD. Prends le temps de lire la charte du forum.

Code à mettre dans le module Thisworkbook (voir animation)

Demo.gif

VB:
Private Sub Workbook_Open()
    With Feuil1
        If .Range("k1") <> Date Then
            'execution mamacro --> remplacer par msgbox: message
            MsgBox "Coucou! Execution de MaMacro."
            .Range("k1") = Date
            Application.DisplayAlerts = False
            ThisWorkbook.Save
            Application.DisplayAlerts = True
        Else
        End If
    End With
End Sub

Bonne continuation.
 

job75

XLDnaute Barbatruc
Bonjour labouil, bienvenue sur XLD,

Alt+F11 pour aller dans VBA puis double-clic en haut à gauche sur ThisWorkbook.

Et collez-y cette macro :
VB:
Private Sub Workbook_Open()
With Sheets("Feuil1").[K1]
    If .Value <> Date Then
        mamacro
        .Value = Date
        Save
    End If
End With
End Sub
Enregistrez et fermez le fichier, la macro s'exécute automatiquement à l'ouverture.

Edit : salut mapomme, cathodique, comme d'habitude la page XLD n'était pas à jour !

A+
 
Dernière édition:

Discussions similaires