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
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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 Subcf 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).AddressBouben
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
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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