Appel d'une macro d'un autre fichier Excel
Bonjour à tous,
Je trouve habituellement mes réponses dans les pages de cet excellent forum mais là, je suis dans une impasse…
Au boulot, nous recevons quotidiennement des fichiers csv que nous retraitons pour nos besoins.
Nous avons près de 150 ‘modèles’ en vba Excel qui fonctionnent tous sur le même principe:
- On lance le modèle, qui lance la sub principale automatiquement :
- le fichier csv source est identifié et traité (selon les cas : impression, envoi pas mail, enregistrement sur le réseau, application de filtre, etc)
La sub principale en appelle d’autre en fonction des besoins. - puis le modèle se ferme après une demande de confirmation (‘Fermer le modèle ?’).
Avec le ‘Grand Confinement’, je me retrouve à faire le travail de plusieurs personnes je souhaite donc gagner du temps en enchainent les différents modèles automatiquement.
J’ai écrit une procédure ‘AllinOne’ qui doit lister les fichiers csv à traiter et appeler les modèles correspondants.
La boucle d’appel des modèles de ma procédure ‘AllinOne’ :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| 'A ce stade, les fichiers csv sont identifiés et listés sur une feuille du classeur.
'Cells(i,3) contient le nom du modèle à appeler. Cells(i,4) indique si le modèle existe.
i = 5
Do While Cells(i, 3) <> ""
If Cells(i, 4) = "connu" Then
Modele = Thisworkbook.Path & "\MODELES\" & Cells(i, 3) & ".xlsm"
Workbooks.Open Modele
Cells(i, 4).Value = "Traité"
End If
i = i + 1
Loop |
La macro du modèle appelé se déroule sans incident...
MAIS, à la sortie du modèle, après avoir validé la demande de confirmation (‘Fermer le modèle ?’) la macro ‘AllinOne’ ne reprend pas.
Pas de message d’erreur.
Code:
1 2 3 4 5 6 7
| 'Fin de la macro des modèles :
If MsgBox("Fermer ce modèle ?", vbYesNo) = vbYes Then
Application.DisplayFullScreen = False
With ThisWorkbook
.Saved = True
.Close
End With |
J’ai tenté d’utiliser la formulation ‘Application.Run Modele !Module.Procédure’ pour appeler le modèle mais le résultat est identique.
L'execution pas à pas m'a permis de voir qu'après le .Close, je reviens sur le code de la macro 'AllinOne'.
Le curseur clignote sous la ligne 'Workbooks.Open Modele' mais la macro est arrêtée.
Avez-vous une idée pour me sortir de cette ornière ?
Merci d'avance pour vos conseils.