IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Déclencher automatiquement 1 macro le 1er jour ouvré du mois


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 215
    Points : 523
    Points
    523
    Par défaut Déclencher automatiquement 1 macro le 1er jour ouvré du mois
    Bonjour,
    de retour sur le forum, j'ai de nouveau une question à poser suite à une macro résolue et également postée dans la section "Contribuez"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Envoi de mails 1er jour du mois ouvré
     If [Accueil!A2] = "" Then [Accueil!A2] = 1
        If Month([Accueil!A2]) <> Month(Date) Then
            [Accueil!A2] = Date
            Envoi_Mail_VMA_Obsolete
    Dans ce code, en cellule A2 se trouve la date du jour [=aujourdhui()] mais je me suis aperçu qu'il y avait un souci avec le code car si je prends en exemple le mois de JUIN 2013, le 1er jour ouvré du mois est donc le lundi 03 juin puisque dans ma société, nous ne travaillons pas le Samedi, ni le dimanche.
    Mais par rapport au calendrier, le 1er jour ouvré du mois est le Samedi 01 juin.
    La macro ne sait donc pas déclenché le lundi 03 juin au matin lorsque j'ai ouvert mon fichier.
    Comment faire pour que çà fonctionne correctement tout en sachant que si par exemple le lundi 03 juin, j'avais été en vacances jusqu'au 10 juin matin, il aurait donc fallu que la macro se déclenche le 10 juin à l'ouverture de mon fichier.

    Cordialement

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bonjour,

    1- Supposons qu'il n'ya pas de congés. Weekday renvoie le numéro de la semaine (système US) 1 étant le dimanche, 7 le samedi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         while  Weekday([Accueil!A2]) =1 Or Weekday([Accueil!A2]) =7
           Date =  DateAdd("d",1,Date)
        Wend
    2- Par contre si vous voulez rajouter des jours de congés, il faut rajouter des conditions de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        while  Weekday([Accueil!A2]) =1 Or Weekday([Accueil!A2]) =7 Or 
       ( DebutVacances <[Accueil!A2]  And [Accueil!A2]> FinVacances)
           Date =  DateAdd("d",1,Date)
        Wend
    Après ca dépend comment sont gérés les jours de congés... Donc cette méthode est perfectible faute d'informations de votre part.

    3- Personnellement, cette méthode d'automatisation a un gros défaut : la nécessité d'ouvrir la feuille Excel. Je vous conseille soit de passer en mode batch, soit de passer en vbscript (ou les 2). Comme ça, l'utilisateur n'aura même pas besoin d'ouvrir Excel

    Cdt

  3. #3
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    Si n'êtes pas opposés à l'idée d'avoir une feuille cachée dans votre classeur, vous pouvez y stocker la date de dernière mise à jour de votre fichier.
    A l'ouverture de votre classeur, vous pourrez alors vérifier si la dernière mise à jour a eu lieu durant le mois en cours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
        If Year([FeuilCachée!A1]) < Year(Now()) or Month([FeuilCachée!A1]) < Month(Now()) Then
            'Réaliser ici les actions de mise à jour
            ' ...
            'Puis stocker la date de mise à jour
            [FeuilCachée!A1] = Now()
        End If
    End Sub
    Les mises à jour seront ainsi exécutées automatiquement lors de la première ouverture du mois, quelle que soit la date et quelle que soit la personne qui ouvre le fichier.

    Cdt

  4. #4
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 215
    Points : 523
    Points
    523
    Par défaut
    Bonjour LELENSOIS 16 et à BEN L,

    Tout d'abord je m'adresse à LELENSOIS 16, je suis preneur de l'idée concernant : mode batch, mode vbscript, mais le souci c'est qu'il faudrait m'expliquer car je suis novice.

    Merci également à toi BEN L, je vais tester cette méthode dès que possible.

    Je teste vos propositions dès que je rentre au boulot car suis souvent en déplacement.

    Je vous tiens au courant.

    Dans l'attente d'une reponse sur le mode batch, ou vbscript.

    Cordialement,
    Graphikris.

Discussions similaires

  1. [XL-2003] Mailing automatique le 1er jour ouvré du mois.
    Par graphikris dans le forum Contribuez
    Réponses: 3
    Dernier message: 24/09/2014, 19h21
  2. [XL-2003] Déclencher automatiquement 1 macro le 1er jour ouvré du mois
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/03/2013, 19h21
  3. [XL-2003] 1er jour ouvrée d'une année
    Par Djohn dans le forum Excel
    Réponses: 2
    Dernier message: 07/09/2009, 16h51
  4. Réponses: 3
    Dernier message: 06/12/2007, 11h09
  5. question sur 6 jours ouvrés par mois de préavis du syntec
    Par Filippo dans le forum Droit du travail
    Réponses: 21
    Dernier message: 14/06/2006, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo