Test déclencher une action

vieuxray -  
 vieuxray -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    1
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  3. vieuxray
     
    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
    0
  4. vieuxray
     
    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
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. vieuxray
     
    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
    0