Arrêt de macro avec Workbook_Open

Bonjour à tous,
Je suis débutant sur ce forum, tout comme dans le VBA c'est pourquoi je viens vers vous pour essayer de comprendre mon problème.

J'ai un fichier Salaire.xlsm qui est un simulateur de salaire. Mon objectif est de détecter si une mise à jour du fichier est disponible et de l'effectuer.
J'ai une macro qui compare la version de mon fichier avec la numéro de version enregistré sur mon serveur web. Si le numéro est différent alors il télécharge le fichier Maj.xlsm du serveur Web puis l'ouvre.

Dans ce fichier Maj, j'ai plusieurs macros.
La première copie les valeurs de certaines cellules du fichier Salaire vers le fichier Maj puis ferme le fichier Salaire.
La seconde macro télécharge le nouveau fichier Salaire.xlsm du serveur Web
La troisième ouvre le fichier téléchargé
La dernière (pas encore faite) va récupérer les valeurs des cellules copié dans le fichier Maj pour les rétablir dans le nouveau fichier Salaire

Voici le code:

Sub CopierValeurs()
    Dim SourceWorkbook As Workbook
    Dim DestinationWorkbook As Workbook
    Dim SourceWorksheet As Worksheet
    Dim DestinationWorksheet As Worksheet
    Dim SourcePara As Worksheet
    Dim DestinationPara As Worksheet

    Dim sourceFilePath As String
    sourceFilePath = ThisWorkbook.Path & "\Salaire.xlsm"

    Set SourceWorkbook = Workbooks.Open(sourceFilePath)

    Set DestinationWorkbook = ThisWorkbook

    Set SourceWorksheet = SourceWorkbook.Sheets("Simulateur Salaire")
    Set DestinationWorksheet = DestinationWorkbook.Sheets("Simulateur Salaire")
    Set SourcePara = SourceWorkbook.Sheets("Paramètres")
    Set DestinationPara = DestinationWorkbook.Sheets("Paramètres")

    DestinationWorksheet.Range("B8:B9").Value = SourceWorksheet.Range("B8:B9").Value
    DestinationWorksheet.Range("H8:H9").Value = SourceWorksheet.Range("H8:H9").Value
    DestinationWorksheet.Range("E15").Value = SourceWorksheet.Range("E15").Value
    DestinationWorksheet.Range("C25:C28").Value = SourceWorksheet.Range("C25:C28").Value
    DestinationWorksheet.Range("H25:H28").Value = SourceWorksheet.Range("H25:H28").Value
    DestinationWorksheet.Range("B36:B40").Value = SourceWorksheet.Range("B36:B40").Value
    DestinationWorksheet.Range("B43:B44").Value = SourceWorksheet.Range("B43:B44").Value
    DestinationWorksheet.Range("G36:G37").Value = SourceWorksheet.Range("G36:G37").Value
    DestinationWorksheet.Range("C50:C51").Value = SourceWorksheet.Range("C50:C51").Value

    DestinationPara.Range("B2").Value = SourcePara.Range("B2").Value

    SourceWorkbook.Close SaveChanges:=False

    ' Nettoyer les objets
    Set SourceWorksheet = Nothing
    Set DestinationWorksheet = Nothing
    Set SourceWorkbook = Nothing
    Set DestinationWorkbook = Nothing
    Set SourcePara = Nothing
    Set DestinationPara = Nothing
    Telecharger
End Sub

Sub Telecharger()
    Dim URL As String
    Dim Destination As String
    Dim objHTTP As Object

    URL = "https://mon_serveur_web/Salaire.xlsm"
    Destination = ThisWorkbook.Path & "\Salaire.xlsm"

    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    objHTTP.Open "GET", URL, False
    objHTTP.send

    If objHTTP.Status = 200 Then
        Dim oStream As Object
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write objHTTP.responseBody
        oStream.SaveToFile Destination, 2
        oStream.Close
        Set oStream = Nothing
    End If

    Set objHTTP = Nothing

    Ouvrir
End Sub

Sub Ouvrir()
    Dim Destination As String

    Destination = ThisWorkbook.Path & "\Salaire.xlsm"
    Workbooks.Open Destination

End Sub

Dans le "Workbook_Open" de ThisWorkBook j'appel la macro CopierValeurs pour lancer la procédure à l'ouverture du classeur.

Comme je l'ai mentionné précédemment, le fichier Maj.xlsm est téléchargé à partir d'une macro du fichier Salaire.xlsm puis l'ouvre ensuite. Quand il s'ouvre la macro se lance correctement mais elle s'arrête après avoir fermé le fichier salaire sans sauvegarder (après avoir copié les valeurs des cellules dans le fichier Maj).
Alors que si j'ouvre mon fichier Maj "manuellement" toute la macro fonctionne correctement.

J'ai essayé de vous décrire mon problème le mieux possible. Si vous avez besoin de plus d'informations n'hésitez pas. J'ai essayé plusieurs alternatives avant de venir vers vous mais je rencontre toujours le même problème.

En vous remerciant !

C'est encore moi ! Ca fait quelques jours que je cherche une solution et il faut que je la trouve après avoir posté ici

Le problème venait de la partie du téléchargement du fichier Maj. J'ai modifié mon ThisWorkBook pour y rajouter une pause de 2 secondes et ça fonctionne.

Private Sub Workbook_Open() 
    Call CopierValeurs
    Application.OnTime Now + TimeValue("00:00:02"), "Télécharger"
End Sub
Rechercher des sujets similaires à "arret macro workbook open"