Problème d'ouverture de fichier dans code VBA

Bonjour à tous,

Je suis novice en VBA et je ne comprends pas d'où vient le problème expliqué en dessous, voici mon code :

Sub Fichier ()

Application.DisplayAlerts = False

Workbooks.Open Filename:= _
        "Nom fichier 1"

Workbooks.Open "Nom fichier 1", UpdateLinks:=0

    Application.Run "Macro1"
    Application.Run "Macro2"
    Application.Run "Macro3"
    ActiveWorkbook.Save
    ActiveWindow.Close

   Workbooks.Open Filename:= _
        "Nom fichier 2"

    Workbooks.Open "Nom fichier 2", UpdateLinks:=0

    Application.Run "Macro1"
    Application.Run "Macro2"
    Application.Run "Macro3"
    ActiveWorkbook.Save
    ActiveWindow.Close

    ActiveWorkbook.Save

    Application.DisplayAlerts = True

    End Sub

Lorsque j’exécute ma macro, celle-ci s’arrête en milieu de code (La macro se termine au premier "ActiveWindow.Close"), je ne comprends pas pourquoi sachant que VBA ne m'indique aucun dysfonctionnement, la macro a simplement finit de s’exécuter alors qu'il y a d'autres lignes de code derrière qui n'ont pas été exécutées.

J'ai trouvé une alternative qui est de découper mon code et de faire plusieurs boutons, mais j'aimerais comprendre d'où vient le problème. Merci beaucoup.

Très bonne journée

Bonjour,

remplace la ligne

  ActiveWindow.Close

par

ActiveWorkbook.Close

Bonjour,

Merci pour ta réponse mais ça ne marche pas...

Merci pour ta réponse mais ça ne marche pas...

ce n'est pas très explicite !

pourquoi ouvrir 2 fois le même fichier ?

Workbooks.Open Filename:= _
        "Nom fichier 1"

Workbooks.Open "Nom fichier 1", UpdateLinks:=0

ça ne change rien ma macro s’arrête toujours au même endroit...

Oui je me suis trompé, j'ai enlevé la deuxième ligne et toujours pas de changement...

re,

à tester,

Sub fichier()
Dim wk1 As Workbook, wk2 As Workbook, i As Integer, fich

Set wk1 = ThisWorkbook
fich = Array("Nom fichier 1", "Nom fichier 2")

For i = LBound(fich) To UBound(fich)
    Workbooks.Open fich(i), UpdateLinks:=0
    Set wk2 = ActiveWorkbook

    Application.Run "Macro1"
    Application.Run "Macro2"
    Application.Run "Macro3"

    With wk2
        .Save
        .Close
    End With
 Next i   
End Sub

Il me semble qu'il y a beaucoup de ligne en double

(même un "save" après ub close)

Sub Fichier ()

Application.DisplayAlerts = False

Workbooks.Open "Nom fichier 1", UpdateLinks:=0

    Application.Run "Macro1"
    Application.Run "Macro2"
    Application.Run "Macro3"
    ActiveWorkbook.Save
    ActiveWorkbook.Close

    Workbooks.Open "Nom fichier 2", UpdateLinks:=0

    Application.Run "Macro1"
    Application.Run "Macro2"
    Application.Run "Macro3"
    ActiveWorkbook.Save
    ActiveWorkbook.Close

    Application.DisplayAlerts = True

    End Sub

Bonjour Xmenpl,

j'ai essayé mais ça ne change rien...

i20100,

Je ne comprends pas bien le code, je précise que les macros ne sont pas les mêmes dans les deux fichiers, je ne comprends donc pas comment celles du fichier 2 peuvent tourner ? Merci

i20100,

Je ne comprends pas bien le code, je précise que les macros ne sont pas les mêmes dans les deux fichiers, je ne comprends donc pas comment celles du fichier 2 peuvent tourner ? Merci

Le code de I20100 que je salut d'ailleurs est une boucle avec i comme variable d'ou le next i à la fin

Il utilise donc le i pour changer le nom de fichier et une fois le fichier ouvert ceux sont bien les macros qu'il contient qui se lancent.

je précise que les macros ne sont pas les mêmes dans les deux fichiers, je ne comprends donc pas comment celles du fichier 2 peuvent tourner ? Merci

tu as mis les même macro pour les 2 fichiers,

    Application.Run "Macro1"
    Application.Run "Macro2"
    Application.Run "Macro3"

ps/ la façon que tu as écrit le code, cela suppose que les macro 1, 2 et 3

sont dans le fichier principal.

si tu veux exécuter des macro qui sont sur chacun des fichier ouvert il faut utiliser cette syntaxe,

Application.Run ("fich(i) & "!Macro1")

reste à vérifier la valeur des variables "Nom fichier 1"

Merci Xmenpl pour cette précision,

i20100,

Oui c'est vrai car ce n'est pas mon vrai code j'ai enlevé toute les informations confidentielles, mais en effet j'aurais du écrire pour le fichier 2 : "Macro4", "Macro5", "Macro6"

Désolé

re,

à tester,

Sub fichier()
Dim wk1 As Workbook, wk2 As Workbook

Set wk1 = ThisWorkbook

Workbooks.Open "Nom fichier 1", UpdateLinks:=0
Set wk2 = ActiveWorkbook

Application.Run "Macro1"
Application.Run "Macro2"
Application.Run "Macro3"

With wk2
    .Save
    .Close
End With

Workbooks.Open "Nom fichier 2", UpdateLinks:=0
Set wk2 = ActiveWorkbook

Application.Run "Macro3"
Application.Run "Macro4"
Application.Run "Macro5"

With wk2
    .Save
    .Close
End With
End Sub

Ça ne change toujours rien... tant pis je vais faire plusieurs boutons merci beaucoup pour vos aides !

Bonne journée !

Rechercher des sujets similaires à "probleme ouverture fichier code vba"