Appeler une macro de plusieurs fichiers

Bonjour, je suis a la recherche d'une potion VBA qui m'ouvrirai Tous les liens d'un tableau de la colonne A5:A et appel la même une macro/Pour me faire comprendre (fichier en PJ) , je clic sur l'icone imprime, jouvre les liens de A5:A et dans ces fichier , j'appel un macro qui s'appelle "impression".Par avance merci

3test-lien-1.xlsm (42.14 Ko)

Bonjour,

Si la macro d'impression est la même dans tous les fichiers, c'est mieux de l'écrire une seule fois, dans le fichier principal.

Sinon, pour appeler une macro d'un autre fichier, une solution, à adapter :

Public Sub Imprimer()

    Dim sRep As String 'répertoire
    Dim iLig As Integer 'ligne
    Dim sFic As String 'chemin du fichier
    Dim oWB As Workbook 'fichier

    sRep = ThisWorkbook.Worksheets(1).Range("B2").Value

    For iLig = 5 To 12
        sFic = ThisWorkbook.Worksheets(1).Range("A" & iLig).Value
        'ouverture du fichier
        Set oWB = Workbooks.Open(sRep & sFic & ".xlsm", , True)
        'appel de la macro d'impression du fichier
        Application.Run sFic & "!modImpression.Imprimer"
        'fermeture du fichier
        oWB.Close False
        Set oWB = Nothing
    Next iLig

End Sub

cf PJ

NB : si le fichier est un lien hypertexte, pour récupérer le chemin du lien

        ThisWorkbook.Worksheets(1).Range("A" & iLig).Hyperlinks(1).Address

Bouben

13test-lien-v0-1.xlsm (42.50 Ko)

Bonjour et je vous remercie pour votre implication.

j'ai une erreur de bug (en pj)

Votre macro recherche un fichier "0001" , je me suis mal exprimé, les noms des mes fichiers commence 1.2.3.4.5..........

mais pour tester votre macro , j'ai renommé le fichier "0001" en créant le dossier "C:\TEMP\ListeFichiers" comme dans votre exemple , cependant elle ouvre bien le fichier mais ne lance pas la macro "Impression".

Dans l'attente de votre retour, bien cordialement

5test-3.xlsx (50.23 Ko)

Bonjour,

Les noms des fichiers sont dans l'onglet Excel, en cellule A5, A6 et suivantes.

Dans l'exemple "0001", si le fichier s'appelle "toto", indiquer toto.

Toutefois, l'extension (.xlsm) est ajoutée dans le code VBA.

Set oWB = Workbooks.Open(sRep & sFic & ".xlsm", , True)

Exemple :

Nom dans Excel : "toto" => fichier recherché : "toto.xlsm".

S'il ne s'agit pas de fichiers ".xlsm", il convient soit de modifier le code VBA, soit de saisir le nom complet, avec l'extension dans Excel (ex : "toto.xlsm") et de modifier la ligne VBA pour ne pas ajouter l'extension

ex :

Set oWB = Workbooks.Open(sRep & sFic, , True)

A vérifier aussi, le nom du répertoire (ici "C:\TEMP\ListeFichiers\"), doit se terminer par "\"

Concernant l'erreur pour l'impression :

Dans l'exemple, la procédure appelle la macro "modImpression.Imprimer" des fichiers, considérant qu'il y a un module nommé "modImpression", avec un procédure publique nommée "Imprimer".

Application.Run sFic & "!modImpression.Imprimer"

Dans les fichiers réels (exemple à fournir éventuellement) :

> vérifier que la procédure s'appelle bien "Imprimer", qu'elle est publique.

> il n'y a pas de module "modImpression", sauf coïncidence extraordinaire

Dans le fichier principal :

Modifier la ligne

Application.Run sFic & "!modImpression.Imprimer"

en préfixant avec nom du module (ou de la feuille) où est cette procédure.

Exemples :

Application.Run sFic & "!module1.Imprimer"
Application.Run sFic & "!Feuil1.Imprimer"

Tout devrait fonctionner !

Bouben

Rechercher des sujets similaires à "appeler macro fichiers"