lancement macro à l'ouverture d'excel

  • Initiateur de la discussion olive
  • Date de début
O

olive

Guest
Bonjour à tous,

Je sais déjà comment lancer une macro à l'ouverture d'un classeur (merci au forum) mais cela ne m'est plus suffisant pour ce que je veux faire. Aussi je voudrais savoir s'il est possible (et si oui comment?) de lancer l'éxécution d'une macro à l'ouverture d'excel ???

Merci d'avance pour votre aide !!!

Olive!
 
R

Remi

Guest
Bonjour olive
Le probleme n'est pas excessivement compliqué:
1 - Tu crée un fichier contenant les macro que tu veut executer à l'ouverture d'excel.
2 - Tu stoke ensuite tes macro dans un fichier xla de macro compelementaires.
3 - Dans le fichier xla contenant tes macros par l'intermediaire de l'execution automatique des macro à l'ouverture d'un fichier tu appelle les macro a executer de la facon suivante

Private Sub Workbook_Open()
call macro1
call macro2
.
.
.

End Sub

il faut ensuite qu'excel charge cette macro complementaire a chaque demarage, pour cela tu va dans outils|Macro Complementaire |
Tu va chercher la macro complementaire precedente (celle qui contient les macros que tu veut lancer au demarage) et c'est normalement tout.

J'espere que ca reponds a ta question.
Rémi.
 
@

@+Thierry

Guest
Bonjour Rémi, Olive, le Forum

Comme le dit Rémi on peut créer une XLA, mais je propose une alternative. On peut aussi très simplement créer un fichier "Perso.xls" (Personal.xls en US) qui est "hidden" (affichage par menu Window/Unhide) et qui se lance automatiquement à l'ouverture d'Excel (depuis dans le répertoire "XLstart")

Pour créer un "Perso.xls" il suffit d'utiliser l'enregistreur de Macro et dans le premier Prompt Popup de renseigner enregistrer la macro dans "Classeur de Macro Perso"...

Le reste est comme décrit par Remi pour ce qui est de l'évènementielle "Private Sub Workbook_Open()" et comme tu sais déjà.

Bon Aprèm
@+Thierry
 
O

olive

Guest
Je rencontre un nouveau problème, (pour l'instant j'essai d'appliquer la méthode de rémi) mais quand je vais dans outil, macro complémentaires et que j'essai d'ajouter mon .xla, un message me dit : "truc.xla n'est pas un classeur de macro complémentaire valide"!

Par contre pour ta méthode thierry, ou faut il que je mette le "private sub workbook_open" pour que ca fonctionne car il ne se passe rien ?
 
@

@+Thierry

Guest
Bonsoir Olive, Rémi, le Forum,

Pour la XLA, il faut que ton fichier soit une XLA réellement, sinon Excel t'enverra sur les roses pour le Menu Macros Complémentaires!!! C'est normal.
Quand tu as ton classeur "Truc.Xla" ouvert, par VBE tu actives "ThisWorkbook" et dans les propriétés de ThisWorkBook tu verras "IsAddin", tu mets ce paramètre à True. Là ce deviendras une XLA sans feuille. Ensuite tu sauves ton fichier par Enregistrer Sous et tu bascule dans le Type de Fichier sur Macro Complémentaire Microsoft Excel (*.xla)... Il est logique de sauver les XLA dans le répertoire prévu à cet effet mais celà dépend de ta configuration. Usuellement C:\Program File\Microsoft Office\Office\Macrolib (ou Office10 si XP)

Pour le Perso.xls, si tu as procédé comme je t'ai conseillé (enregistrement d'une macro), le Perso.xls a déjà été créé mais il est invisible. Il faut passer par le menu Window => Unhide (en FR Fenêtre => Afficher)... Et là tu devrais le voir apparaître exactement comme un autre classeur, la seule différence c'est qu'il est dans le répertoire XLSTART (l'emplacement dépend aussi de ta configuration) et il démarre avec Excel à chaque ouverture. En mode visible tu peux accéder à ThisWorkBook et faire comme ceci :


Voilà, les deux solutions sont équivalentes, (avec un penchant pour les XLA si on fait des vrai programmes, et pour le Perso si c'est juste pour lancer un macro à l'ouverture) l'important c'est de ne pas surcherger ces fichiers avec des chose inutiles car tu ralentiras d'autant l'ouverture.

Bonne soirée
@+Thierry
 
O

olive

Guest
Merci beaucoup Thierry, franchement t'es un pro, je vais essayer pour le xla, par contre pour la méthode avec le xls, il me semble que c'est ce que j'ai fait, je l'ai même mis dans XLouvrir (je pense que c'est léquivalent du Xlstart dont tu me parles) mais à l'ouverture d'excel il ne se passe rien ?

Bref c'est pas très grave pour l'instant je vais réessayer l'autre méthode je te tiens au courant dans ce fil.

Encore merci.
 
O

olive

Guest
coucou me revoilou, bijour le forum!

j'ai une petite question qui me parait "coller" à ce fil donc j'y reste :

La macro se lance comme il faut à l'ouverture d'excel, mais si j'ouvre un autre classeur et qu'excel est déjà ouvert, elle ne teste pas ce classeur qui vient de s'ouvrir (en effet cette macro test le classeur avant de s'exécuter), ce qui est normal!

Par contre j'aimerai bien qu'elle le fasse, donc y a t'il quelquechose à faire ou à ajouter à la macro pour qu'elle teste tous les classeurs qu'on ouvre ?

Voili, voilou, j'esepre que vous pourrez m'aider encore merci d'avance!

Olive.
 
@

@+Thierry

Guest
Salut Olive, Rémi, le Forum

A moins que quelq'un ait une solution "clef" en main... Regarde l'aide à "WindowActivate" ... Mais je crains bien que tu rentres dans la création d'un Module de Classe pour faire fonction un truc comme ceci :

Private Sub object_WindowActivate(ByVal Wb As Excel.Workbook, ByVal Wn As Excel.Window)

L'aide semble être détaillée, mais pas évident si on n'est pas habitué au module de classe...

Finalement avant de poster cette réponse, j'ai jetté un oeil sur le net et trouvé ceci de Pierre Fauconnier, qui, bonne nouvelle pour toi, a trouvé une méthode uniquement avec un Module ThisWorkBook que je viens de tester....

Public WithEvents App As Application 'En Top de Module ThisWorkBook

Private Sub Workbook_Open()
Set App = Application
End Sub

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
MsgBox "Ouverture " & Wb.Name
End Sub

A adapter pour ce que tu veux faire... Avec un truc du style
Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
Select Case Wb.Name
Case "Toto.xls"
TheTotosMacro
Case "Zaza.xls"
TheZazasMacro
End Select
End Sub

Attention toutefois le WorkBook_Activate se déclenchera à chaque activation du WorkBook et pas uniquement à l'ouverture de celui-ci...

Bon Aprèm
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 545
Messages
2 089 475
Membres
104 174
dernier inscrit
Jeanpy NGUVUMALI SAIDI