Test déclencher une action

Bonjour a toutes et tous, Forum bonjour


Excel 2007 VBA

Dans mon programme de compta, je souhaiterai svp, par un petit test en code VBA déclencher (une seule fois par an une action automatique)

Donc cela serai pour le premier jour de l'année, si (01 janv 2014) alors je déclenche mon action qui consistera de me remettre automatiquement a zéro mes tableaux.

Juste besoin du code qui me permettra le jour arrivé déclencher l'action a réaliser.

Par contre le premier de l'an, il faudrai qu'une fois l'action déclencher ne se produise qu'une seule et unique fois

Car si le fichier est ouvert plusieurs fois dans cette mème journée, ne pas refaire la RAZ

Pour infos le fichier compta peut etre ouvert et fermer une ou plusieurs fois par jour.

Merci pour votre aide ainsi que de votre temps.

Cordialement Ray

5 réponses

  1. Salut polux31,

    Voila pour moi c'est bon, j'ai fait l'essai et ça m'écrit bien 2014 en A2 et "OUI" en B2
    Je vais adapter a mon programme et prochaine mise a jour RDV le 01 01 2015

    d'ici la, il y aura de l'eau de passée sous le pont LOL

    Merci beaucoup pour ton aide et aussi pour ton savoir partagé
    Une bonne continuation pour toi et a bientot sans doute
    et encore tous mes remerciements.

    Bien cordialement Raymond
    1. Re

      Merci pour la réponse, je n'ai pas été malin j'aurai pu y penser, désolé.

      Par contre

      Dans le fichier Excel j'ai créer une feuille et nommer "Calendrier", ça c'est OK

      Mais ci dessous je ne comprends pas trop bien, tu peux svp m'expliquer.

      (1) avec en A1 [Année] ???????????

      (2) et B1 [RAZ] ?????????????

      Merci Ray
      1. De rien.

        Tu nommes la colonne A en A1 "Année" et la colonne B en B1 "RAZ".
        Mais on peut se passer de titre, c'est juste pour vérifier que le RAZ a été effectué et de mettre à jour quand c'est fait.
    2. Pour faire le test il suffit de changer la valeur de la constante:

      'Pour tester avec le jour courant (aujourd'hui le 8/1/2014)
      Private Const jourdelan = "8/1"


      ;0)
      1. Salut polux31

        Merci pour ta réponse et aussi pour le code, c'est gentil.

        Pour répondre a ta question, effectivement vu que j'ouvre ce fichier au moins une fois par jour, il me serai facile de faire un RAZ des tableaux, j'y ai penser.
        Mais comme je suis curieux, j'ai opter également pour cette façon automatique de faire et comme je ne savais pas comment faire ce bout de code.
        Grace a toi celui ci va aller mes archives de bout de codes via mon classeur.

        Hé puis pour ce qui est d'alourdir mon fichier et de lancer une procédure à chaque ouverture n'ai pas grace, le fichier est simple et sans calculs compliqués.

        Par contre svp, comment je peux simuler la date pour essayer le code car bien sur je vais pas attendre le 01 janvier 2015 ihihihi

        En tout cas je te remercie beaucoup pour ton aide, bonne après midi a toi

        Cdlt Ray
        1. Bonjour,

          Créer un module ModMAJ et copier/coller le code ci dessous
          '----------------------------------
          '          Module ModMAJ
          '----------------------------------
          Option Explicit
          
          Private Const jourdelan = "1/1"
          Private jour
          Private mois
          Private an
          
          Public Function DoesJourDelAn() As Boolean
              
              jour = Day(Date)
              mois = Month(Date)
              an = Year(Date)
              
              If CStr(jour & "/" & mois) = jourdelan Then
                  DoesJourDelAn = True
              Else
                  DoesJourDelAn = False
              End If
              
          End Function
          
          Public Function DoesRAZ() As Boolean
          Dim lig As Long
          Dim ws As Worksheet
          
              Set ws = ThisWorkbook.Worksheets("Calendrier")
              lig = 2
              While ws.Range("A" & lig).Value <> ""
                  If CInt(ws.Range("A" & lig).Value) = an And ws.Range("B" & lig).Value = "Oui" Then
                      RAZ = True
                      Exit Function
                  End If
                  lig = lig + 1
              Wend
              
              RAZ = False
              
          End Function
          
          Public Sub MAJCalendrier()
          Dim derlig As Long
          Dim ws As Worksheet
          
              Set ws = ThisWorkbook.Worksheets("Calendrier")
              derlig = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
              ws.Range("A" & derlig).Value = an
              ws.Range("B" & derlig).Value = "Oui"
              
          End Sub
          


          Dans ThisWorkbook créer ou ajouter à la procédure Open
          Private Sub Workbook_Open()
          
              If ModMAJ.DoesJourDelAn = True Then
                  If ModMAJ.DoesRAZ = False Then
                      'code pour faire la remise à zéro des tableaux
                      ModMAJ.MAJCalendrier
                  End If
              End If
              
          End Sub
          


          Dans le fichier Excel créer une feuille et la nommer "Calendrier" avec en A1 [Année] et B1 [RAZ].

          Maintenant, il faut se poser la bonne question :
          Est-ce indispensable d'alourdir un fichier et de lancer une procédure à chaque ouverture du fichier pour une action qui n'a lieu qu'une seule fois par an à une date qu'on ne peut pas oublier !!!

          ;0)

          «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
          Nicolas Boileau