Exécution d'une procédure dans une heure définie (plannification VBA)

Bonjour,

Je suis débutant en VBA , et je suis confronté à un problème qui

consiste de cliquer une seule fois sur un bouton créé dans une feuille

d'excel pour exécuter une procédure chaque matin à 9h , cette procédure

permet d'exporter les données (valeurs) du jour précédent lorsque la

base de données de l'entreprise est mise à jour.

J'ai mis en place un code qui permet si nous sommes lundi d'exporter les

données du vendredi de la semaine précédente ( en ignorant le samedi et

le dimanche), si nous sommes mardi ou mercredi ou jeudi ou vendredi

d'exporter les données du jour précédent de la semaine en cours , et si

nous sommes le weekend de ne rien faire .

Mon problème est que le code que j'ai mis en place, marche que pour un

seul jour et ne marche pas pour les jours suivants après avoir cliquer

sur le bouton dans le fichier excel associé au code.

Je souhaiterais que lorsque je clique sur le bouton une seule fois que

la procédure s'exécute chaque matin(9h) tout les jours de la semaine (

du lundi au vendredi ) sans avoir besoin de nouveau cliquer sur le

bouton.

Svp Est-ce qu'il y aurait une personne ayant été confrontée à de tel problème pour m'aider ?

Ci-dessous mon code :

'Exportation du fichier Nova chaque matin à 9h

Public Sub Robot()

Dim mydate As Date
Dim wsOIL_Spot As Worksheet
Dim wsFX_Spot As Worksheet
Dim lastOILSpotDate As Date
Dim lastFXSpotDate As Date
Dim lastNovaExportDate As Date
Dim exported As Boolean

    exported = False

    Set wsOIL_Spot = ThisWorkbook.Sheets("OIL_Spot")
    Set wsFX_Spot = ThisWorkbook.Sheets("FX_Spot")

    mydate = Date

    If Weekday(mydate, vbMonday) = 1 Then  ' si nous sommes lundi
        mydate = Date - 3 '  gestion weeckend , si lundi, exporter les données du vendredi précédent

      Else

        mydate = Date - 1

    End If

    lastOILSpotDate = CDate(mydate)
    lastFXSpotDate = CDate(mydate)

    lastNovaExportDate = IIf(Weekday(mydate, vbMonday) = 1, CDate(mydate) - 3, CDate(mydate) - 1)

'Gérer les week ends. 6 is saturday and 7 is sunday

    If Weekday(mydate) = 1 Or Weekday(mydate) = 2 Or Weekday(mydate) = 3 Or Weekday(mydate) = 4 Or Weekday(mydate) = 5 Then

        Application.OnTime TimeValue("09:00:00"), "Procédure_Export"      'lundi

        Application.Wait TimeValue("00:00:05")

        Application.OnTime TimeValue("09:00:00"), "Procédure_Export"         'mardi

         Application.Wait TimeValue("00:00:05")

        Application.OnTime TimeValue("09:00:00"), "Procédure_Export"    'Mercredi
         Application.Wait TimeValue("00:00:05")

        Application.OnTime TimeValue("09:00:00"), "Procédure_Export"   'Jeudi

         Application.Wait TimeValue("00:00:05")

        Application.OnTime TimeValue("09:00:00"), "Procédure_Export"   Vendredi

    End If

End Sub

Bonjour, je suis pas sur que vouloir absolument utiliser l'heure soit l'idéal.

Votre macro devrait tourner en boucle permanente pour attendre le lendemain 9h... ce qui implique que le fichier n'est jamais fermé.

Il faudrait peut-être voir çà avec le "Workbook open" à l'ouverture d'excel.

Prévoir une cellule dans votre fichier pour y indiquer la date et si oui ou non la macro a déjà été lancée.

Exemple en A1="04/06/2020" si aujourd'hui = A1 on lance la macro et on indique la date de demain. ainsi la macro n'est lancée qu'une fois par jour.

On pourrait avoir dans le workbook open

Private Sub Workbook_Open()
If Format(Now, "dd/mm/yyyy")= Range("A1").Value Then
MsgBox ("Lancement de la macro")
Range("A1").Value = DateAdd("d", 1, Format(Now, "dd/mm/yyyy"))
End If

End Sub
Rechercher des sujets similaires à "execution procedure heure definie plannification vba"