Test déclencher une action

Fermé
vieuxray - 8 janv. 2014 à 08:24
 vieuxray - 8 janv. 2014 à 15:39
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
A voir également:

5 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 8/01/2014 à 11:11
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
8 janv. 2014 à 14:07
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
0
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 8/01/2014 à 15:04
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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