Succession macro via CALL

bonjour a tous,

voici mon code :

Sub analyse_totale()
Call analyse_automatique1
Call analyse_automatique2
Call analyse_automatique3
End Sub

Sub analyse_automatique1()
Dim cheminfichier As String
Dim classeur As Object
cheminfichier = "I:\lechemin du 1er fichier.xlsm"
Set classeur = Workbooks.Open(cheminfichier, , ReadOnly:=True)
Application.Run "'" & classeur.Name & "'!automatisation"
' Libérez la mémoire
Set classeur = Nothing
End Sub

Sub analyse_automatique2()
Dim cheminfichier As String
Dim classeur As Object
cheminfichier = "I:\lechemin du 2eme fichier.xlsm"
Set classeur = Workbooks.Open(cheminfichier, , ReadOnly:=True)
Application.Run "'" & classeur.Name & "'!automatisation"
' Libérez la mémoire
Set classeur = Nothing
End Sub

Sub analyse_automatique3()
Dim cheminfichier As String
Dim classeur As Object
cheminfichier = "I:\lechemin du 3e fichier.xlsm"
Set classeur = Workbooks.Open(cheminfichier, , ReadOnly:=True)
Application.Run "'" & classeur.Name & "'!automatisation"
' Libérez la mémoire
Set classeur = Nothing
End Sub

chaque analyse automatique fonctionne parfaitement bien lorsque que je les appelles chacune leur tour.

en revanche quand je demande l'analyse totale, seule le 1er code se lance et n'enchaine pas sur les suivants....

qu'est ce que j'oublie ...? svp

merci d'avance.

Bonjour,

le temps d'exécution peut-être... Une variable interrupteur au début de chaque Sub qui indique que c'est en cours, et des boucles d'attente pour passer à l'appel de la Sub suivante en fonction de l'interrupteur :

Public EnCours As Boolean
Sub analyse_totale()
    Call analyse_automatique1
    Do
        DoEvents
    Loop While EnCours = True
    Call analyse_automatique2
    Do
        DoEvents
    Loop While EnCours = True
    Call analyse_automatique3
End Sub

Sub analyse_automatique1()
EnCours = True
Dim cheminfichier As String
Dim classeur As Object
cheminfichier = "I:\lechemin du 1er fichier.xlsm"
Set classeur = Workbooks.Open(cheminfichier, , ReadOnly:=True)
Application.Run "'" & classeur.Name & "'!automatisation"
' Libérez la mémoire
Set classeur = Nothing
EnCours = False
End Sub

Sub analyse_automatique2()
EnCours = True
Dim cheminfichier As String
Dim classeur As Object
cheminfichier = "I:\lechemin du 2eme fichier.xlsm"
Set classeur = Workbooks.Open(cheminfichier, , ReadOnly:=True)
Application.Run "'" & classeur.Name & "'!automatisation"
' Libérez la mémoire
Set classeur = Nothing
EnCours = False
End Sub

Sub analyse_automatique3()
Dim cheminfichier As String
Dim classeur As Object
cheminfichier = "I:\lechemin du 3e fichier.xlsm"
Set classeur = Workbooks.Open(cheminfichier, , ReadOnly:=True)
Application.Run "'" & classeur.Name & "'!automatisation"
' Libérez la mémoire
Set classeur = Nothing
End Sub

A vérifier...
Il y a peut-être plus simple et fonctionnel, si toutes fois ceci fonctionne !

@ bientôt

LouReeD

j'avais une instruction close dans le fichier suivant... desolé

du coup c'est résolu.

merci.

Ce n'est pas grave !

Merci pour votre retour, cela m'évite de rester aux abois !

@ bientôt

LouReeD

Rechercher des sujets similaires à "succession macro via call"