Exécution macro selon condition

salut , voila dans mon projet vba j'ai une macro que l'utilisateur l’exécute chaque mois.

debut de mois = 15 eme jour de chaque mois courant

fin mois =14 eme jour de mois suivant.

exemple:

si aujourd’ hui on est le 15 /09 on pourra exécuter la macro une fois seulement. on peu pas ré-exécuter cette macro que SI la date est 15/10 ou plus

MEILLEUR salutations.

A mon avis, la date de fin de mois (le 14) ne joue aucun rôle. Si on est le 15 du mois courant et si la macro n'a pas encore été exécutée, on l'exécute et on met un flag dans une cellule masquée du fichier (initialement à 0 au départ, puis à 1 après exécution par exemple).

Pour savoir si on est le 15 du mois courant, un truc dans ce goût-là :

    Dim jour As Byte

    jour = Format(Date, "dd")
    If jour <> 15 Then
        Echec  ' Message avec raison de l'échec date <> 15 ou Flag à 1 
    Else
        Sheets("Flag").Cells(1, 1) = 1
        Succes
    End If

salut Optimix

je suis entrain d'essayer avec les formule genre si date(aujourdh() >15 ....blabla ..dans des cellules ainsi on peut comparer la date actuel avec ses cellule, mais j'avoue que c'est pas facile pour moi.

pour ton code j'essayer de l'adapter mais aucune résultat ou bien j'ai pas compris le code..

merci pour votre contribution.

Décortiquez ce petit fichier (l'onglet "Flag" est caché, mais vous pouvez le rendre visible) :

9record.xlsm (21.19 Ko)
re Optimix
ok je vais l'adapter pour mon projet mais je crois que si je veux exécuter ma macro a partir de 15 du prochaine mois si impossible vu que la cellule contient tjr 1 je vais essayer de mettre une formule qui me permettras de changer la valeur de la cellule chaque 15 de mois pour que je puisse re-exécuter cette macro

je vous tiens au courant..

merci bcp pour cette approche puis je galère avec les formules...

Salut le forum

j'ai adapter le code fourni par Optimix par ce code qui ça fonctionne la macro s'excute selon les conditions désirés.

If ARCH_OK <> "OK" Then
    If Day(Date) >= Day(FU.Range("AC6")) And (Month(Date) = Month(FU.Range("AC6")) Or _
    Day(Date) <= Day(FU.Range("AC7")) And Month(Date) = Month(FU.Range("AC7"))) Then
       ' exécution macro
       Else
       ' Non exécution macro
    End If
    End If
    If Month(Date) = Month(FU.Range("AC6")) + 1 Or Month(Date) = Month(FU.Range("AC7")) + 1 Then
       FU.Range("AC4").Value = ""
    End If

merci Optimix

si d'autre auront une autre approche je suis prenant.

Rechercher des sujets similaires à "execution macro condition"