Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

choix de macro en fonction du .xls

  • Initiateur de la discussion Initiateur de la discussion Msyl20
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Msyl20

Guest
Bonjour

J'ai une dizaine de macro que je souhaite utilisé
en auto open avec ThisWorkbook en fonction du fichier ouvert et uniquement pour ce fichier, dans thisworkbook j'ai fait


Private Sub Workbook_Open()

choixmacro

End Sub

---------------------------------------------------------------------

Sub choixmacro()

Dossier = "c:\Documents and Settings\"
Fichier = "fichier.xls"
Chemin = "c:\Documents and Settings\moi\fichier.xls"
If ActiveWorkbooke = Fichier Then
Run ("module10.traficentrantdespostesSDA")

End If
End Sub


--------------------------------------------------------------

Enfin bref, cela ne fonctionne pas, aidez moi s'il vous plait
 
Re : choix de macro en fonction du .xls

Salut Msyl20,

Essaye quelque chose comme
Code:
Sub choixmacro()
  Fichier = "MonClasseur"  ' Sans .xls
  If ActiveWorkbook.Name = Fichier Then
    Run ("module10.traficentrantdespostesSDA")
  End If
End Sub

A+
 
Re : choix de macro en fonction du .xls

Bonjour Sylvain et bienvenue sur le forum,

J'ai pas tout compris mais, déjà en remplaçant:

If ActiveWorkbooke = Fichier Then

Par
Code:
If ActiveWorkbook.Name = Fichier Then

Cela a plus de chance de fonctionner.

A bientôt
 
Re : choix de macro en fonction du .xls

Merci pour vos reponsses

Mais lors de l'ouverture du fichier l'erreur suivante ce produit

"Variable objet ou variable bloc With non définie (erreur 91)"

et depuis l'editeur VB quand je lance l'execution de la macro
je n'est pas d'erreur mais la deuxieme macro ne ce lance pas ????
-----------------------------------------------------------------------

Sub choixmacro()

Fichier = "PA32-287"
If ActiveWorkbook.Name = Fichier Then
Run ("module10.traficentrantdespostesSDA")
End If
End Sub

------------------------------------------------------------------------

Merci encore pour vos reponsses
 
Re : choix de macro en fonction du .xls

Re,

Il faudrait nous indiquer les endroits ou se situent tes procédures !?

Private Sub Workbook_Open() et Sub choixmacro()

Je ne vois pas trop bien comment tu veux articuler ton fichier ouvert, tes macros !?

A+
 
Re : choix de macro en fonction du .xls

Donc Dans VBAproject/PERSO.XLS/ThisWorkbook ce trouve :

-----------------------------------------------------------------------
Private Sub Workbook_Open ()

choixmacro ' doit me renvoyer vers le module choixmacro() a chaque ouverture d'un .xls

End sub

-------------------------------------------------------------------------------

et dans VBAproject/PERSO.XLS/Module ce trouve

------------------------------------------------------------------------------

Sub choixmacro()

Fichier = "PA32-287"
If ActiveWorkbook.Name = Fichier Then
Run ("module10.traficentrantdespostesSDA")
Else
Exit Sub
End If
End Sub


-----------------------------------------------------------------------------

Je ne sais pas si je suis trés claire mais je suis vraiment debutan donc n'ésité pas
à donné des explication quand à l'utilisation des commandes .

Cordialement
 
Re : choix de macro en fonction du .xls

Sykvain,

si tu veux controler tous les classeurs qui souvrent dans excel pour lancer une macro particulière suivant le nom du classeur ouvert, il te faut faire un module de classe application comme ceci:

Dans le perso xls:

1 - Insérer un module de classe
le renommer: clsApp

Y mettre les lignes suivantes:

Code:
Option Explicit
Code:
[INDENT][COLOR=black]Public WithEvents AppliExcel As Excel.Application[/COLOR][/INDENT]

[INDENT][COLOR=black]Private Sub Appli_WorkbookOpen(ByVal Wb As Workbook)[/COLOR][/INDENT]

[INDENT][COLOR=black]   Select Case Wb.Name[/COLOR][/INDENT]

[INDENT][COLOR=black]       Case "[COLOR=blue]NomFichier1[/COLOR]"[/COLOR][/INDENT][COLOR=black]

[INDENT]          Call [COLOR=seagreen]Module10.traficentrantdespostesSDA[/COLOR][/INDENT]

[INDENT]       Case "[COLOR=blue]NomFichier2[/COLOR]"[/INDENT][/COLOR]

[INDENT][COLOR=black]          Call Module10.AutreMacro[/COLOR][/INDENT]

[INDENT][COLOR=black]       Case "[COLOR=blue]NomFichier3[/COLOR]"[/COLOR][/INDENT][COLOR=black]

[INDENT]       Case "[COLOR=blue]NomFichier4[/COLOR]"[/INDENT]

[INDENT]   End Select[/INDENT]

[INDENT]End Sub[/INDENT]
[/COLOR]
Où tu changes les "NomFichierX" par les noms voulus et le noms de macros par les macros idoines.

2 - Dans un module du perso.xls:

Déclarer une variable plublique comme par exemple.
Public monAppli As clsApp

3 - Dans le module ThisWorkBook du perso.xls:

Code:
Option Explicit
Code:
[INDENT][COLOR=blue][COLOR=black]Private Sub Workbook_Open()[/COLOR][/COLOR][/INDENT][COLOR=blue]

[INDENT][COLOR=blue]   [COLOR=red]Set monAppli = New clsApp[/COLOR][/COLOR][/INDENT][COLOR=blue]

[INDENT][COLOR=blue]   Set monAppli.AppliExcel = Application[/COLOR][/INDENT]

[INDENT]End Sub[/INDENT]
[/COLOR][/COLOR]

4 - Enregitrer le perso.xls. Fermer et réouvrir excel.

A partir de ce moment le perso.xls examinera tous les fichiers ouverts pour comparer leur nom avec les noms inscrits dans les lignes Select Case...EndSelect

A bientôt
 
Re : choix de macro en fonction du .xls

Merci

J'ai insérer tous les modules (classe, ThisWorkBook ) je n'est pas d'erreur mais la macro ne ce lance pas (manuelement elle fonctionne bien)

Voici les code
--------------------------------------
Module classe clsApp:
---------------------------------------
Option Explicit

Public WithEvents AppliExcel As Excel.Application
Private Sub Appli_WorkbookOpen(ByVal Wb As Workbook)
Select Case Wb.Name
Case "PA32-287"
Call Module10.traficentrantdespostesSDA
Case "NomFichier2"
Case "NomFichier3"
Case "NomFichier4"
End Select
End Sub
---------------------------------------
Module ThisWorkBook
---------------------------------------
Private Sub Workbook_Open()
Set monAppli = New clsApp
Set monAppli.AppliExcel = Application

End Sub
---------------------------------------
J'ai placée la variable "Public monAppli As clsApp" au debut de la macro "Module10.traficentrantdespostesSDA"

Je pensse avoir compris le fonctionnement et cela m'aiderais beaucoup

Merci
 
Re : choix de macro en fonction du .xls

Re, bonsoir Sylvain,

1- Dans :
Code:
Public WithEvents AppliExcel As Excel.Application
Private Sub Appli_WorkbookOpen(ByVal Wb As Workbook)
Select Case Wb.Name
Case "PA32-287"
Call Module10.traficentrantdespostesSDA
Case "NomFichier2"
Case "NomFichier3"
Case "NomFichier4"
End Select
End Sub

remplacer "PA32-287" par "PA32-287.xls" . En effet, WB.Name retourne le nom du classeur ainsi que son extension.

2-
J'ai placée la variable "Public monAppli As clsApp" au debut de la macro "Module10.traficentrantdespostesSDA"

Il faut mettre la variable en tête de module et non en tête de macro car elle est Initialisée avant le lancement de la macro(Dans Workbook_Open du perso.xls). Il faut qu'il en soit car elle fait référence à l'objet Application et dont on doit pouvoir controler les évènements d'ouverture des classeur.

A bientôt.
 
Re : choix de macro en fonction du .xls

Ok, ca avance mais aprés avoir mis l'extion du fichier et placée la variable au dessus de la macro, elle ne ce lance toujours pas ???

Merci encore
 
Re : choix de macro en fonction du .xls

Bonjour Sylvain,
bonjour le forum,

En relisant, ce que je t'ai fourni, j'ai trouvé une erreur dans la classe clsApp:




Remplace
Private Sub Appli_WorkbookOpen(ByVal Wb As Workbook)
Par

Private Sub AppliExcel_WorkbookOpen(ByVal Wb As Workbook)

En effet j'avais changé le nom de la variable objet 'Appli' en 'AppliExcel' et oublié de le faire dans le message. Les nom des évènements doivent commencer par ce nom de variable objet.

bonne journée

[Edition] Pour me faire pardonner cette erreur, ci-joint un zip= 4 fichiers nommés Fichier1.xls à Fichier4.xls et un fichier Sylvain.xls. Ouvre ce dernier puis ouvre les autres un par un.
 
Dernière modification par un modérateur:
Re : choix de macro en fonction du .xls

Bonjour le forum

et merci Hasco, ça fonctionne super bien, j'ai u un probleme avec option explicit et des variable qui étais mal faite mais maintenan ca roule .

Merci Beaucoup
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
467
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…