Appeler une macro extérieure

jojodanslalune

XLDnaute Junior
Bonjour,

Je continue à explorer les possibilités, à découvrir les richesses d'Excel. Mais certaines choses échappent encore à mes compétences...

Voici ma question du jour: est-t-il possible d'ouvrir tous les documents contenu dans un répertoire et de faire exécuter une macro contenue dans ces documents?

Merci à vous.
 

MJ13

XLDnaute Barbatruc
Re : Appeler une macro extérieure

Bonjour à tous

Moi , je le ferai en ouvrant chaque fichier puis en effectuant la macro sur chaque fichier.

Mais bon tout cela dépend de ce que tu veux faire?

1) Lister les documents (j'ai vu une macro de CbernardT, je vais essayer de la rechercher) pour le faire.
2) executer une macro. c'est possible avec application.run nom fichier!macro (le mieux est d'enregistrer une macro et de récupérer le code exact).
 

mariobross

XLDnaute Occasionnel
Re : Appeler une macro extérieure

pour qu'une macro se lance à l'ouverture d'un classeur il faut placer le code vba dans "this workbook" suivant la syntaxe :

Private Sub Workbook_Open()
'code macro
End Sub

pour ouvrir plusieurs classeurs à la fois tu peux créer un "classeur de démarage" dans lequel (avec l'enregistreur de macro) tu crée la macro qui ouvre les autres classeurs , puis tu affecte cette macro à un bouton de commande que tu place dans le "classeur de démarage".

ainsi lorque tu clique sur ce bouton tous tes classeurs s'ouvrent et si dans l'un d'entre eux tu as mis un code en :private Sub Workbook_Open()
il s'executera à l'ouverture du classeur.
 

bqtr

XLDnaute Accro
Re : Appeler une macro extérieure

Salut jojodanslalune, mariobross, MJ13

Tout d'abord, as tu réglé ton problème de suppression de userform ? ICI

Ce matin j'ai répondu à Julie sur une demande un peu similaire, ICI
Il s'agissait d'ouvrir 8 fichier dans le même répertoire et d'y extraire le contenu de certaines cellules dans un autre fichier. Tu pourras peut-être t'en inspirer.

A+
 

jojodanslalune

XLDnaute Junior
Re : Appeler une macro extérieure

Merci déjà pour ces réponses ! Pour le userform, je viens de répondre dans le post... ;-)

Je lis vos propositions et je m'y retrouve mal.

Peut-être comprends-je mal, peut-être me suis-je mal exprimé.

La macro que je veux lancer se trouve dans chaque fichier que je veux ouvrir.

Je ne dois donc pas lister les fichiers mais vraiment les ouvrir et lancer la macro qui se trouve dans chacun de ces fichiers.

La macro devrait donc dire dans son langage châtier: ouvre les fichiers du répertoire MACHIN et lance dans chacun de ces fichiers sa macro BAZAR.
 

jojodanslalune

XLDnaute Junior
Re : Appeler une macro extérieure

Désolé de blesser ta sensibilité... néanmoins, je suppose que ça doit être démontrable sans fichier. Mon fichier est très gros... dépasse les 500 Ko et je n'ai pas envie de le morceler ou chipoter.

Pas de soucis, je respecte ton opinion. Tu n'es pas obligé de m'aider.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Appeler une macro extérieure

Bonsoir le fil,

Sans fichiers exemples (dans ton cas il en faut au moins deux ou trois), le premier que l'on ouvre, le deuxième, le troisième..... avec leurs macros respectives......

ZIPPES tes fichiers. Si tu ne sais pas faire, tu demandes, ensuite pour envoyer il y a un TUTO, mais on peut aussi t'aider.

A te lire.

Bon début de week-end.

Jean-Pierre
 

bqtr

XLDnaute Accro
Re : Appeler une macro extérieure

Re,

Un exemple si j'ai bien compris :

La macro liste les fichiers dans le répertoire (ici Q:\bilans) et ouvre tout les fichier Excel présent dans ce dit répertoire.

Dans chaque fichier du répertoire, tu mets dans le thisworkbook un appel à ta macro. Elle se lancera alors à l'ouverture du fichier.

Macro pour lister le répertoire

Code:
Sub Recherche_Fichier()

Dim FS As FileSearch
Dim Rep As String
Dim i As Integer

Rep = "Q:\bilans" 'ici entre le chemin du répertoire de tes 8 fichiers
Set FS = Application.FileSearch
With FS
      .LookIn = Rep
      .Filename = "*.xls"
      .Execute
  If .FoundFiles.Count = 0 Then
       MsgBox "fichier non trouvé"
       Exit Sub
  End If
End With

For i = 1 To FS.FoundFiles.Count
 Workbooks.Open Filename:=FS.FoundFiles(i)
Next i

End Sub

Dans chaque fichier du répertoire : deux macros

La 1ère, celle que tu veux lancer.

Code:
Sub coucou()
MsgBox "Hello ! je suis le classeur" & ActiveWorkbook.Name
End Sub

La deuxième, qui lancera la première (à mettre dans le thisworkbook)

Code:
Private Sub Workbook_Open()
coucou
End Sub

Bien sûr, il faut lancer la macro "Recherche_Fichier" à partir d'un fichier Excel déjà ouvert.

A+
 

MJ13

XLDnaute Barbatruc
Re : Appeler une macro extérieure

Bonjour jojo et le forum.

Mais ne t'inquiètes pas, tu ne m'as pas blessé (il m'en faut plus). Et je serai ravi de t'aider.

Mais revenons à ton post premier:
est-t-il possible d'ouvrir tous les documents contenus dans un répertoire et de faire exécuter une macro contenue dans ces documents?

Et bien la il faut bien avoir une macro qui ouvre chaque fichier et donc faire la liste des fichiers à un moment.
Puis dans un autre post:
La macro que je veux lancer se trouve dans chaque fichier que je veux ouvrir.

Je ne dois donc pas lister les fichiers mais vraiment les ouvrir et lancer la macro qui se trouve dans chacun de ces fichiers.

Lorsqu'on fait une macro qui liste les fichiers, on n'est pas obligé d'afficher la liste.

Bien sur une macro est un ensemble de codes qui peuvent agir automatiquement sur une application. Ensuite il faut adapter la macro à ton besoin.

J'espère que les macros de bqtr répondront à ta question.
 
Dernière édition:

jojodanslalune

XLDnaute Junior
Re : Appeler une macro extérieure

Merci à tous pour vos conseils ! Ok pour la première macro ! C'est effectivement ce que je souhaitais ! Vous êtes des pros !

Par contre, le lancement automatique de la macro, je la connais déjà. Mais ce n'est pas ce que je veux. Car cette macro ne doit pas forcément se lancer à l'ouverture du fichier. Mais bien quand elle est seulement nécessaire.

Si j'ajoute un CALL MAMACRO dans la première macro, ça ouvrira la macro du fichier qui est ouvert?

Désolé de tout compliquer...
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed