Bonjour Philippe.
Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et XLEvenements le
module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte tout
évènement d'Excel.
Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
renommer avec la fenêtre Propriétés
Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
Pour XLEvenements:
********
Option Explicit
Private WithEvents xlApp As Excel.Application
Private Sub Class_Initialize()
Set xlApp = Excel.Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
'
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
'
End Sub
*****
Pour Module1
****************
Option Explicit
Public evtEvents As XLEvenements
Public Sub Auto_Open()
Set evtEvents = New XLEvenements
End Sub
Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans Excel
avec Options/Macros Complémentaires.
A enrichir au fur et à mesure.
Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y rester
en cours de route.
Yvan
"Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| Bonjour nouveau venu en Excel VBA et macros
| comment rendre systématique, la gestion de l'événement Worksheet change dans
| la feuille 1 de TOUT classeur ouvert
| par exemple
|
| Sub Worksheet_Change(ByVal Target As Range)
| Target.Interior.ColorIndex = 4
| End sub
| Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| droit sur onglet feuille1/code) fonctionne
|
| Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| : NOUVEAU ou EXISTANT
| j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| fonctionne pas
|
| Merci poir votre aide
Bonjour Philippe.
Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et XLEvenements le
module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte tout
évènement d'Excel.
Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
renommer avec la fenêtre Propriétés
Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
Pour XLEvenements:
********
Option Explicit
Private WithEvents xlApp As Excel.Application
Private Sub Class_Initialize()
Set xlApp = Excel.Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
'
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
'
End Sub
*****
Pour Module1
****************
Option Explicit
Public evtEvents As XLEvenements
Public Sub Auto_Open()
Set evtEvents = New XLEvenements
End Sub
Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans Excel
avec Options/Macros Complémentaires.
A enrichir au fur et à mesure.
Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y rester
en cours de route.
Yvan
"Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
6F76C7E3-E95C-463A-A694-2D556FA1E214@microsoft.com...
| Bonjour nouveau venu en Excel VBA et macros
| comment rendre systématique, la gestion de l'événement Worksheet change dans
| la feuille 1 de TOUT classeur ouvert
| par exemple
|
| Sub Worksheet_Change(ByVal Target As Range)
| Target.Interior.ColorIndex = 4
| End sub
| Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| droit sur onglet feuille1/code) fonctionne
|
| Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| : NOUVEAU ou EXISTANT
| j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| fonctionne pas
|
| Merci poir votre aide
Bonjour Philippe.
Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et XLEvenements le
module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte tout
évènement d'Excel.
Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
renommer avec la fenêtre Propriétés
Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
Pour XLEvenements:
********
Option Explicit
Private WithEvents xlApp As Excel.Application
Private Sub Class_Initialize()
Set xlApp = Excel.Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
'
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
'
End Sub
*****
Pour Module1
****************
Option Explicit
Public evtEvents As XLEvenements
Public Sub Auto_Open()
Set evtEvents = New XLEvenements
End Sub
Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans Excel
avec Options/Macros Complémentaires.
A enrichir au fur et à mesure.
Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y rester
en cours de route.
Yvan
"Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| Bonjour nouveau venu en Excel VBA et macros
| comment rendre systématique, la gestion de l'événement Worksheet change dans
| la feuille 1 de TOUT classeur ouvert
| par exemple
|
| Sub Worksheet_Change(ByVal Target As Range)
| Target.Interior.ColorIndex = 4
| End sub
| Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| droit sur onglet feuille1/code) fonctionne
|
| Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| : NOUVEAU ou EXISTANT
| j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| fonctionne pas
|
| Merci poir votre aide
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
Merci yan pour ton aide,
débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI,
j'ai
fouillé et trouvé comment dans une feuille de classeur prendre la main sur
le
changement de contenu d'une cellule.. j'ai trouvé qu'il existait des
macros
générailisables XLA , mais je ne vois pas comment ajouter le code de la
feuille gerant le change, dans la feuille du doucument ouvrant (nouveau
ou
existant)
Dans le module de classe XLEvenements dois je utiliser la routine
xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
code souhaité et comment ??
Je ne perçois pas l'utilité du module1
Encore MerciBonjour Philippe.
Dans une macro complémentaire, oui! C'est la solution la plus élégante,
mais
peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant
que çà).
Il faut créer dans ta macro complémentaire deux modules dont un module de
classe.
Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
module de classe. XLEvenements est un gestionnaire d'évènements qui
intercepte tout
évènement d'Excel.
Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB.
Choisir le
VBAProject du nouveau classeur. Insérer le module et le module de classe.
Les
renommer avec la fenêtre Propriétés
Puis écrire le code de départ des deux modules (Commencer par
XLEvenements)
Pour XLEvenements:
********
Option Explicit
Private WithEvents xlApp As Excel.Application
Private Sub Class_Initialize()
Set xlApp = Excel.Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
'
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
'
End Sub
*****
Pour Module1
****************
Option Explicit
Public evtEvents As XLEvenements
Public Sub Auto_Open()
Set evtEvents = New XLEvenements
End Sub
Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger
dans Excel
avec Options/Macros Complémentaires.
A enrichir au fur et à mesure.
Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui
vont y rester
en cours de route.
Yvan
"Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message
de news:
| Bonjour nouveau venu en Excel VBA et macros
| comment rendre systématique, la gestion de l'événement Worksheet change
dans
| la feuille 1 de TOUT classeur ouvert
| par exemple
|
| Sub Worksheet_Change(ByVal Target As Range)
| Target.Interior.ColorIndex = 4
| End sub
| Cette routine mis dans le code de la feuille 1 du classeur ouvert
(clique
| droit sur onglet feuille1/code) fonctionne
|
| Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT
classeur
| : NOUVEAU ou EXISTANT
| j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet
mySub.xla,
| ai ouvert un nouveau classeur, ai activé macro complémentaire mySub,
mais ne
| fonctionne pas
|
| Merci poir votre aide
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
Merci yan pour ton aide,
débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI,
j'ai
fouillé et trouvé comment dans une feuille de classeur prendre la main sur
le
changement de contenu d'une cellule.. j'ai trouvé qu'il existait des
macros
générailisables XLA , mais je ne vois pas comment ajouter le code de la
feuille gerant le change, dans la feuille du doucument ouvrant (nouveau
ou
existant)
Dans le module de classe XLEvenements dois je utiliser la routine
xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
code souhaité et comment ??
Je ne perçois pas l'utilité du module1
Encore Merci
Bonjour Philippe.
Dans une macro complémentaire, oui! C'est la solution la plus élégante,
mais
peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant
que çà).
Il faut créer dans ta macro complémentaire deux modules dont un module de
classe.
Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
module de classe. XLEvenements est un gestionnaire d'évènements qui
intercepte tout
évènement d'Excel.
Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB.
Choisir le
VBAProject du nouveau classeur. Insérer le module et le module de classe.
Les
renommer avec la fenêtre Propriétés
Puis écrire le code de départ des deux modules (Commencer par
XLEvenements)
Pour XLEvenements:
********
Option Explicit
Private WithEvents xlApp As Excel.Application
Private Sub Class_Initialize()
Set xlApp = Excel.Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
'
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
'
End Sub
*****
Pour Module1
****************
Option Explicit
Public evtEvents As XLEvenements
Public Sub Auto_Open()
Set evtEvents = New XLEvenements
End Sub
Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger
dans Excel
avec Options/Macros Complémentaires.
A enrichir au fur et à mesure.
Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui
vont y rester
en cours de route.
Yvan
"Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message
de news:
6F76C7E3-E95C-463A-A694-2D556FA1E214@microsoft.com...
| Bonjour nouveau venu en Excel VBA et macros
| comment rendre systématique, la gestion de l'événement Worksheet change
dans
| la feuille 1 de TOUT classeur ouvert
| par exemple
|
| Sub Worksheet_Change(ByVal Target As Range)
| Target.Interior.ColorIndex = 4
| End sub
| Cette routine mis dans le code de la feuille 1 du classeur ouvert
(clique
| droit sur onglet feuille1/code) fonctionne
|
| Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT
classeur
| : NOUVEAU ou EXISTANT
| j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet
mySub.xla,
| ai ouvert un nouveau classeur, ai activé macro complémentaire mySub,
mais ne
| fonctionne pas
|
| Merci poir votre aide
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
Merci yan pour ton aide,
débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI,
j'ai
fouillé et trouvé comment dans une feuille de classeur prendre la main sur
le
changement de contenu d'une cellule.. j'ai trouvé qu'il existait des
macros
générailisables XLA , mais je ne vois pas comment ajouter le code de la
feuille gerant le change, dans la feuille du doucument ouvrant (nouveau
ou
existant)
Dans le module de classe XLEvenements dois je utiliser la routine
xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
code souhaité et comment ??
Je ne perçois pas l'utilité du module1
Encore MerciBonjour Philippe.
Dans une macro complémentaire, oui! C'est la solution la plus élégante,
mais
peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant
que çà).
Il faut créer dans ta macro complémentaire deux modules dont un module de
classe.
Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
module de classe. XLEvenements est un gestionnaire d'évènements qui
intercepte tout
évènement d'Excel.
Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB.
Choisir le
VBAProject du nouveau classeur. Insérer le module et le module de classe.
Les
renommer avec la fenêtre Propriétés
Puis écrire le code de départ des deux modules (Commencer par
XLEvenements)
Pour XLEvenements:
********
Option Explicit
Private WithEvents xlApp As Excel.Application
Private Sub Class_Initialize()
Set xlApp = Excel.Application
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
'
' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
'
End Sub
*****
Pour Module1
****************
Option Explicit
Public evtEvents As XLEvenements
Public Sub Auto_Open()
Set evtEvents = New XLEvenements
End Sub
Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger
dans Excel
avec Options/Macros Complémentaires.
A enrichir au fur et à mesure.
Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui
vont y rester
en cours de route.
Yvan
"Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message
de news:
| Bonjour nouveau venu en Excel VBA et macros
| comment rendre systématique, la gestion de l'événement Worksheet change
dans
| la feuille 1 de TOUT classeur ouvert
| par exemple
|
| Sub Worksheet_Change(ByVal Target As Range)
| Target.Interior.ColorIndex = 4
| End sub
| Cette routine mis dans le code de la feuille 1 du classeur ouvert
(clique
| droit sur onglet feuille1/code) fonctionne
|
| Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT
classeur
| : NOUVEAU ou EXISTANT
| j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet
mySub.xla,
| ai ouvert un nouveau classeur, ai activé macro complémentaire mySub,
mais ne
| fonctionne pas
|
| Merci poir votre aide
Oui Philippe.
Tu vois, pour les cheveux, çà commence!
1 - Le role de Module1
=============== > Le module 1 est un recueil de procédures (macros si tu préfères). Tu pourras en
mettre autant que tu veux.
Il est nécessaire ici pour créer le gestionnaire d'évènements. D'une part en créant
la variable xlEvents, d'autre part en l'initialisant pour rendre le gestionnaire
d'évènements opérationnel. L'initialisation est faite par l'instruction Set
evtEvents = New XLEVENEMENTS.
Cette instruction est dans la procédure Auto_Open, qui démarre avec la macro
complémentaire, c'est à dire soit quand on la charge, soit quand on démarre Excel si
la macro est déjà chargée.
Résumé: Le module 1 sert à charger le gestionnaire d'évènements et à héberger une
partie des procédures utiles au fonctionnement du projet
2 - Le rôle du Gestionnaire d'évènements
=========================== >
Le code que je t'ai donné sert à initialiser le gestionnaire. A chaque évènement, il
va regarder si tu lui as fourni une instruction correspondant à l'évènement.
Pour reprendre ton exemple initial:
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
Tu te places dans le module de classe et tu cherches dans la liste déroulante en haut
à droite l'évènement correspondant. Tu trouves et tu sélectionne SheetChange. S'ouvre
alors une procédure xlApp_SheetChange que tu peux compléter comme ceci:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Beep
Target.Interior.ColorIndex = 4
End Sub
Tu pourrais aussi la renseigner ainsi:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
call Module1.Procedure1(target)
end sub
avec dans Module1
Sub Procedure1(Cible as range)
Cible.Interior.ColorIndex = 4
End Sub
En résumé, le Gestionnaire d'évènements intercepte les évènements d'Excel et exécute
les procédures associées définies par l'utilisateur.
Je sais, c'est assez rébarbatif au départ, mais on s'y fait assez vite.
Bon courage.
@+
Yvan
"Philippe" a écrit dans le message de news:
| Merci yan pour ton aide,
| débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI, j'ai
| fouillé et trouvé comment dans une feuille de classeur prendre la main sur le
| changement de contenu d'une cellule.. j'ai trouvé qu'il existait des macros
| générailisables XLA , mais je ne vois pas comment ajouter le code de la
| feuille gerant le change, dans la feuille du doucument ouvrant (nouveau ou
| existant)
|
| Dans le module de classe XLEvenements dois je utiliser la routine
| xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
| code souhaité et comment ??
|
| Je ne perçois pas l'utilité du module1
|
| Encore Merci
|
|
|
| > Bonjour Philippe.
| >
| > Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
| > peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
| >
| > Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
| > Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
| > module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte
tout
| > évènement d'Excel.
| >
| > Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
| > VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
| > renommer avec la fenêtre Propriétés
| >
| > Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
| >
| > Pour XLEvenements:
| >
| > ********
| > Option Explicit
| > Private WithEvents xlApp As Excel.Application
| >
| > Private Sub Class_Initialize()
| > Set xlApp = Excel.Application
| > End Sub
| >
| > Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
| > '
| > ' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
| > '
| > End Sub
| > *****
| >
| > Pour Module1
| >
| > ****************
| > Option Explicit
| > Public evtEvents As XLEvenements
| >
| > Public Sub Auto_Open()
| > Set evtEvents = New XLEvenements
| > End Sub
| >
| > Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans
Excel
| > avec Options/Macros Complémentaires.
| >
| > A enrichir au fur et à mesure.
| >
| > Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y
rester
| > en cours de route.
| >
| >
| > Yvan
| >
| >
| > "Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| >
| > | Bonjour nouveau venu en Excel VBA et macros
| > | comment rendre systématique, la gestion de l'événement Worksheet change dans
| > | la feuille 1 de TOUT classeur ouvert
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
| > | Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| > | droit sur onglet feuille1/code) fonctionne
| > |
| > | Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| > | : NOUVEAU ou EXISTANT
| > | j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| > | ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| > | fonctionne pas
| > |
| > | Merci poir votre aide
| >
| >
| >
Oui Philippe.
Tu vois, pour les cheveux, çà commence!
1 - Le role de Module1
=============== > Le module 1 est un recueil de procédures (macros si tu préfères). Tu pourras en
mettre autant que tu veux.
Il est nécessaire ici pour créer le gestionnaire d'évènements. D'une part en créant
la variable xlEvents, d'autre part en l'initialisant pour rendre le gestionnaire
d'évènements opérationnel. L'initialisation est faite par l'instruction Set
evtEvents = New XLEVENEMENTS.
Cette instruction est dans la procédure Auto_Open, qui démarre avec la macro
complémentaire, c'est à dire soit quand on la charge, soit quand on démarre Excel si
la macro est déjà chargée.
Résumé: Le module 1 sert à charger le gestionnaire d'évènements et à héberger une
partie des procédures utiles au fonctionnement du projet
2 - Le rôle du Gestionnaire d'évènements
=========================== >
Le code que je t'ai donné sert à initialiser le gestionnaire. A chaque évènement, il
va regarder si tu lui as fourni une instruction correspondant à l'évènement.
Pour reprendre ton exemple initial:
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
Tu te places dans le module de classe et tu cherches dans la liste déroulante en haut
à droite l'évènement correspondant. Tu trouves et tu sélectionne SheetChange. S'ouvre
alors une procédure xlApp_SheetChange que tu peux compléter comme ceci:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Beep
Target.Interior.ColorIndex = 4
End Sub
Tu pourrais aussi la renseigner ainsi:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
call Module1.Procedure1(target)
end sub
avec dans Module1
Sub Procedure1(Cible as range)
Cible.Interior.ColorIndex = 4
End Sub
En résumé, le Gestionnaire d'évènements intercepte les évènements d'Excel et exécute
les procédures associées définies par l'utilisateur.
Je sais, c'est assez rébarbatif au départ, mais on s'y fait assez vite.
Bon courage.
@+
Yvan
"Philippe" <Philippe@discussions.microsoft.com> a écrit dans le message de news:
82D438BD-0591-44C6-A76D-DE75B1FE6220@microsoft.com...
| Merci yan pour ton aide,
| débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI, j'ai
| fouillé et trouvé comment dans une feuille de classeur prendre la main sur le
| changement de contenu d'une cellule.. j'ai trouvé qu'il existait des macros
| générailisables XLA , mais je ne vois pas comment ajouter le code de la
| feuille gerant le change, dans la feuille du doucument ouvrant (nouveau ou
| existant)
|
| Dans le module de classe XLEvenements dois je utiliser la routine
| xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
| code souhaité et comment ??
|
| Je ne perçois pas l'utilité du module1
|
| Encore Merci
|
|
|
| > Bonjour Philippe.
| >
| > Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
| > peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
| >
| > Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
| > Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
| > module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte
tout
| > évènement d'Excel.
| >
| > Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
| > VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
| > renommer avec la fenêtre Propriétés
| >
| > Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
| >
| > Pour XLEvenements:
| >
| > ********
| > Option Explicit
| > Private WithEvents xlApp As Excel.Application
| >
| > Private Sub Class_Initialize()
| > Set xlApp = Excel.Application
| > End Sub
| >
| > Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
| > '
| > ' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
| > '
| > End Sub
| > *****
| >
| > Pour Module1
| >
| > ****************
| > Option Explicit
| > Public evtEvents As XLEvenements
| >
| > Public Sub Auto_Open()
| > Set evtEvents = New XLEvenements
| > End Sub
| >
| > Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans
Excel
| > avec Options/Macros Complémentaires.
| >
| > A enrichir au fur et à mesure.
| >
| > Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y
rester
| > en cours de route.
| >
| >
| > Yvan
| >
| >
| > "Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| > 6F76C7E3-E95C-463A-A694-2D556FA1E214@microsoft.com...
| > | Bonjour nouveau venu en Excel VBA et macros
| > | comment rendre systématique, la gestion de l'événement Worksheet change dans
| > | la feuille 1 de TOUT classeur ouvert
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
| > | Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| > | droit sur onglet feuille1/code) fonctionne
| > |
| > | Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| > | : NOUVEAU ou EXISTANT
| > | j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| > | ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| > | fonctionne pas
| > |
| > | Merci poir votre aide
| >
| >
| >
Oui Philippe.
Tu vois, pour les cheveux, çà commence!
1 - Le role de Module1
=============== > Le module 1 est un recueil de procédures (macros si tu préfères). Tu pourras en
mettre autant que tu veux.
Il est nécessaire ici pour créer le gestionnaire d'évènements. D'une part en créant
la variable xlEvents, d'autre part en l'initialisant pour rendre le gestionnaire
d'évènements opérationnel. L'initialisation est faite par l'instruction Set
evtEvents = New XLEVENEMENTS.
Cette instruction est dans la procédure Auto_Open, qui démarre avec la macro
complémentaire, c'est à dire soit quand on la charge, soit quand on démarre Excel si
la macro est déjà chargée.
Résumé: Le module 1 sert à charger le gestionnaire d'évènements et à héberger une
partie des procédures utiles au fonctionnement du projet
2 - Le rôle du Gestionnaire d'évènements
=========================== >
Le code que je t'ai donné sert à initialiser le gestionnaire. A chaque évènement, il
va regarder si tu lui as fourni une instruction correspondant à l'évènement.
Pour reprendre ton exemple initial:
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
Tu te places dans le module de classe et tu cherches dans la liste déroulante en haut
à droite l'évènement correspondant. Tu trouves et tu sélectionne SheetChange. S'ouvre
alors une procédure xlApp_SheetChange que tu peux compléter comme ceci:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Beep
Target.Interior.ColorIndex = 4
End Sub
Tu pourrais aussi la renseigner ainsi:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
call Module1.Procedure1(target)
end sub
avec dans Module1
Sub Procedure1(Cible as range)
Cible.Interior.ColorIndex = 4
End Sub
En résumé, le Gestionnaire d'évènements intercepte les évènements d'Excel et exécute
les procédures associées définies par l'utilisateur.
Je sais, c'est assez rébarbatif au départ, mais on s'y fait assez vite.
Bon courage.
@+
Yvan
"Philippe" a écrit dans le message de news:
| Merci yan pour ton aide,
| débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI, j'ai
| fouillé et trouvé comment dans une feuille de classeur prendre la main sur le
| changement de contenu d'une cellule.. j'ai trouvé qu'il existait des macros
| générailisables XLA , mais je ne vois pas comment ajouter le code de la
| feuille gerant le change, dans la feuille du doucument ouvrant (nouveau ou
| existant)
|
| Dans le module de classe XLEvenements dois je utiliser la routine
| xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
| code souhaité et comment ??
|
| Je ne perçois pas l'utilité du module1
|
| Encore Merci
|
|
|
| > Bonjour Philippe.
| >
| > Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
| > peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
| >
| > Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
| > Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
| > module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte
tout
| > évènement d'Excel.
| >
| > Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
| > VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
| > renommer avec la fenêtre Propriétés
| >
| > Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
| >
| > Pour XLEvenements:
| >
| > ********
| > Option Explicit
| > Private WithEvents xlApp As Excel.Application
| >
| > Private Sub Class_Initialize()
| > Set xlApp = Excel.Application
| > End Sub
| >
| > Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
| > '
| > ' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
| > '
| > End Sub
| > *****
| >
| > Pour Module1
| >
| > ****************
| > Option Explicit
| > Public evtEvents As XLEvenements
| >
| > Public Sub Auto_Open()
| > Set evtEvents = New XLEvenements
| > End Sub
| >
| > Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans
Excel
| > avec Options/Macros Complémentaires.
| >
| > A enrichir au fur et à mesure.
| >
| > Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y
rester
| > en cours de route.
| >
| >
| > Yvan
| >
| >
| > "Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| >
| > | Bonjour nouveau venu en Excel VBA et macros
| > | comment rendre systématique, la gestion de l'événement Worksheet change dans
| > | la feuille 1 de TOUT classeur ouvert
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
| > | Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| > | droit sur onglet feuille1/code) fonctionne
| > |
| > | Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| > | : NOUVEAU ou EXISTANT
| > | j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| > | ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| > | fonctionne pas
| > |
| > | Merci poir votre aide
| >
| >
| >
Oui Philippe.
Tu vois, pour les cheveux, çà commence!
1 - Le role de Module1
=============== > Le module 1 est un recueil de procédures (macros si tu préfères). Tu pourras en
mettre autant que tu veux.
Il est nécessaire ici pour créer le gestionnaire d'évènements. D'une part en créant
la variable xlEvents, d'autre part en l'initialisant pour rendre le gestionnaire
d'évènements opérationnel. L'initialisation est faite par l'instruction Set
evtEvents = New XLEVENEMENTS.
Cette instruction est dans la procédure Auto_Open, qui démarre avec la macro
complémentaire, c'est à dire soit quand on la charge, soit quand on démarre Excel si
la macro est déjà chargée.
Résumé: Le module 1 sert à charger le gestionnaire d'évènements et à héberger une
partie des procédures utiles au fonctionnement du projet
2 - Le rôle du Gestionnaire d'évènements
=========================== >
Le code que je t'ai donné sert à initialiser le gestionnaire. A chaque évènement, il
va regarder si tu lui as fourni une instruction correspondant à l'évènement.
Pour reprendre ton exemple initial:
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
Tu te places dans le module de classe et tu cherches dans la liste déroulante en haut
à droite l'évènement correspondant. Tu trouves et tu sélectionne SheetChange. S'ouvre
alors une procédure xlApp_SheetChange que tu peux compléter comme ceci:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Beep
Target.Interior.ColorIndex = 4
End Sub
Tu pourrais aussi la renseigner ainsi:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
call Module1.Procedure1(target)
end sub
avec dans Module1
Sub Procedure1(Cible as range)
Cible.Interior.ColorIndex = 4
End Sub
En résumé, le Gestionnaire d'évènements intercepte les évènements d'Excel et exécute
les procédures associées définies par l'utilisateur.
Je sais, c'est assez rébarbatif au départ, mais on s'y fait assez vite.
Bon courage.
@+
Yvan
"Philippe" a écrit dans le message de news:
| Merci yan pour ton aide,
| débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI, j'ai
| fouillé et trouvé comment dans une feuille de classeur prendre la main sur le
| changement de contenu d'une cellule.. j'ai trouvé qu'il existait des macros
| générailisables XLA , mais je ne vois pas comment ajouter le code de la
| feuille gerant le change, dans la feuille du doucument ouvrant (nouveau ou
| existant)
|
| Dans le module de classe XLEvenements dois je utiliser la routine
| xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
| code souhaité et comment ??
|
| Je ne perçois pas l'utilité du module1
|
| Encore Merci
|
|
|
| > Bonjour Philippe.
| >
| > Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
| > peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
| >
| > Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
| > Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
| > module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte
tout
| > évènement d'Excel.
| >
| > Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
| > VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
| > renommer avec la fenêtre Propriétés
| >
| > Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
| >
| > Pour XLEvenements:
| >
| > ********
| > Option Explicit
| > Private WithEvents xlApp As Excel.Application
| >
| > Private Sub Class_Initialize()
| > Set xlApp = Excel.Application
| > End Sub
| >
| > Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
| > '
| > ' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
| > '
| > End Sub
| > *****
| >
| > Pour Module1
| >
| > ****************
| > Option Explicit
| > Public evtEvents As XLEvenements
| >
| > Public Sub Auto_Open()
| > Set evtEvents = New XLEvenements
| > End Sub
| >
| > Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans
Excel
| > avec Options/Macros Complémentaires.
| >
| > A enrichir au fur et à mesure.
| >
| > Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y
rester
| > en cours de route.
| >
| >
| > Yvan
| >
| >
| > "Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| >
| > | Bonjour nouveau venu en Excel VBA et macros
| > | comment rendre systématique, la gestion de l'événement Worksheet change dans
| > | la feuille 1 de TOUT classeur ouvert
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
| > | Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| > | droit sur onglet feuille1/code) fonctionne
| > |
| > | Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| > | : NOUVEAU ou EXISTANT
| > | j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| > | ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| > | fonctionne pas
| > |
| > | Merci poir votre aide
| >
| >
| >
Oui Philippe.
Tu vois, pour les cheveux, çà commence!
1 - Le role de Module1
=============== > Le module 1 est un recueil de procédures (macros si tu préfères). Tu pourras en
mettre autant que tu veux.
Il est nécessaire ici pour créer le gestionnaire d'évènements. D'une part en créant
la variable xlEvents, d'autre part en l'initialisant pour rendre le gestionnaire
d'évènements opérationnel. L'initialisation est faite par l'instruction Set
evtEvents = New XLEVENEMENTS.
Cette instruction est dans la procédure Auto_Open, qui démarre avec la macro
complémentaire, c'est à dire soit quand on la charge, soit quand on démarre Excel si
la macro est déjà chargée.
Résumé: Le module 1 sert à charger le gestionnaire d'évènements et à héberger une
partie des procédures utiles au fonctionnement du projet
2 - Le rôle du Gestionnaire d'évènements
=========================== >
Le code que je t'ai donné sert à initialiser le gestionnaire. A chaque évènement, il
va regarder si tu lui as fourni une instruction correspondant à l'évènement.
Pour reprendre ton exemple initial:
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
Tu te places dans le module de classe et tu cherches dans la liste déroulante en haut
à droite l'évènement correspondant. Tu trouves et tu sélectionne SheetChange. S'ouvre
alors une procédure xlApp_SheetChange que tu peux compléter comme ceci:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Beep
Target.Interior.ColorIndex = 4
End Sub
Tu pourrais aussi la renseigner ainsi:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
call Module1.Procedure1(target)
end sub
avec dans Module1
Sub Procedure1(Cible as range)
Cible.Interior.ColorIndex = 4
End Sub
En résumé, le Gestionnaire d'évènements intercepte les évènements d'Excel et exécute
les procédures associées définies par l'utilisateur.
Je sais, c'est assez rébarbatif au départ, mais on s'y fait assez vite.
Bon courage.
@+
Yvan
"Philippe" <Philippe@discussions.microsoft.com> a écrit dans le message de news:
82D438BD-0591-44C6-A76D-DE75B1FE6220@microsoft.com...
| Merci yan pour ton aide,
| débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI, j'ai
| fouillé et trouvé comment dans une feuille de classeur prendre la main sur le
| changement de contenu d'une cellule.. j'ai trouvé qu'il existait des macros
| générailisables XLA , mais je ne vois pas comment ajouter le code de la
| feuille gerant le change, dans la feuille du doucument ouvrant (nouveau ou
| existant)
|
| Dans le module de classe XLEvenements dois je utiliser la routine
| xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
| code souhaité et comment ??
|
| Je ne perçois pas l'utilité du module1
|
| Encore Merci
|
|
|
| > Bonjour Philippe.
| >
| > Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
| > peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
| >
| > Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
| > Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
| > module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte
tout
| > évènement d'Excel.
| >
| > Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
| > VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
| > renommer avec la fenêtre Propriétés
| >
| > Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
| >
| > Pour XLEvenements:
| >
| > ********
| > Option Explicit
| > Private WithEvents xlApp As Excel.Application
| >
| > Private Sub Class_Initialize()
| > Set xlApp = Excel.Application
| > End Sub
| >
| > Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
| > '
| > ' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
| > '
| > End Sub
| > *****
| >
| > Pour Module1
| >
| > ****************
| > Option Explicit
| > Public evtEvents As XLEvenements
| >
| > Public Sub Auto_Open()
| > Set evtEvents = New XLEvenements
| > End Sub
| >
| > Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans
Excel
| > avec Options/Macros Complémentaires.
| >
| > A enrichir au fur et à mesure.
| >
| > Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y
rester
| > en cours de route.
| >
| >
| > Yvan
| >
| >
| > "Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| > 6F76C7E3-E95C-463A-A694-2D556FA1E214@microsoft.com...
| > | Bonjour nouveau venu en Excel VBA et macros
| > | comment rendre systématique, la gestion de l'événement Worksheet change dans
| > | la feuille 1 de TOUT classeur ouvert
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
| > | Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| > | droit sur onglet feuille1/code) fonctionne
| > |
| > | Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| > | : NOUVEAU ou EXISTANT
| > | j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| > | ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| > | fonctionne pas
| > |
| > | Merci poir votre aide
| >
| >
| >
Oui Philippe.
Tu vois, pour les cheveux, çà commence!
1 - Le role de Module1
=============== > Le module 1 est un recueil de procédures (macros si tu préfères). Tu pourras en
mettre autant que tu veux.
Il est nécessaire ici pour créer le gestionnaire d'évènements. D'une part en créant
la variable xlEvents, d'autre part en l'initialisant pour rendre le gestionnaire
d'évènements opérationnel. L'initialisation est faite par l'instruction Set
evtEvents = New XLEVENEMENTS.
Cette instruction est dans la procédure Auto_Open, qui démarre avec la macro
complémentaire, c'est à dire soit quand on la charge, soit quand on démarre Excel si
la macro est déjà chargée.
Résumé: Le module 1 sert à charger le gestionnaire d'évènements et à héberger une
partie des procédures utiles au fonctionnement du projet
2 - Le rôle du Gestionnaire d'évènements
=========================== >
Le code que je t'ai donné sert à initialiser le gestionnaire. A chaque évènement, il
va regarder si tu lui as fourni une instruction correspondant à l'évènement.
Pour reprendre ton exemple initial:
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
Tu te places dans le module de classe et tu cherches dans la liste déroulante en haut
à droite l'évènement correspondant. Tu trouves et tu sélectionne SheetChange. S'ouvre
alors une procédure xlApp_SheetChange que tu peux compléter comme ceci:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Beep
Target.Interior.ColorIndex = 4
End Sub
Tu pourrais aussi la renseigner ainsi:
Private Sub xlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
call Module1.Procedure1(target)
end sub
avec dans Module1
Sub Procedure1(Cible as range)
Cible.Interior.ColorIndex = 4
End Sub
En résumé, le Gestionnaire d'évènements intercepte les évènements d'Excel et exécute
les procédures associées définies par l'utilisateur.
Je sais, c'est assez rébarbatif au départ, mais on s'y fait assez vite.
Bon courage.
@+
Yvan
"Philippe" a écrit dans le message de news:
| Merci yan pour ton aide,
| débutant en programmation (VB, C#..): NON, en Excel VBA et macros OUI, j'ai
| fouillé et trouvé comment dans une feuille de classeur prendre la main sur le
| changement de contenu d'une cellule.. j'ai trouvé qu'il existait des macros
| générailisables XLA , mais je ne vois pas comment ajouter le code de la
| feuille gerant le change, dans la feuille du doucument ouvrant (nouveau ou
| existant)
|
| Dans le module de classe XLEvenements dois je utiliser la routine
| xlApp_WorkbookOpen pour remplir le code de la feuille_1 du Wb ouvrant du
| code souhaité et comment ??
|
| Je ne perçois pas l'utilité du module1
|
| Encore Merci
|
|
|
| > Bonjour Philippe.
| >
| > Dans une macro complémentaire, oui! C'est la solution la plus élégante, mais
| > peut-être un peu délicat pour débuter VBA (si tu es vraiment si débutant que çà).
| >
| > Il faut créer dans ta macro complémentaire deux modules dont un module de classe.
| > Appelons Module1 le module "ordinaire" (qui existe peut-être déjà) et
XLEvenements le
| > module de classe. XLEvenements est un gestionnaire d'évènements qui intercepte
tout
| > évènement d'Excel.
| >
| > Ouvrir un nouveau classeur, faire Alt+F11 pour ouvrir l'éditeur VB. Choisir le
| > VBAProject du nouveau classeur. Insérer le module et le module de classe. Les
| > renommer avec la fenêtre Propriétés
| >
| > Puis écrire le code de départ des deux modules (Commencer par XLEvenements)
| >
| > Pour XLEvenements:
| >
| > ********
| > Option Explicit
| > Private WithEvents xlApp As Excel.Application
| >
| > Private Sub Class_Initialize()
| > Set xlApp = Excel.Application
| > End Sub
| >
| > Private Sub xlApp_WorkbookOpen(ByVal Wb As Excel.Workbook)
| > '
| > ' Ce qu'il y a à faire sur le classeur Wb lorsqu'il s'ouvre
| > '
| > End Sub
| > *****
| >
| > Pour Module1
| >
| > ****************
| > Option Explicit
| > Public evtEvents As XLEvenements
| >
| > Public Sub Auto_Open()
| > Set evtEvents = New XLEvenements
| > End Sub
| >
| > Et c'est parti. Il reste à enregistrer çà en MaMacroCompl.xla, la charger dans
Excel
| > avec Options/Macros Complémentaires.
| >
| > A enrichir au fur et à mesure.
| >
| > Je te souhaitebien du plaisir. C'est super mais il y a des cheveux qui vont y
rester
| > en cours de route.
| >
| >
| > Yvan
| >
| >
| > "Philippe" <Philippe @discussions.microsoft.com> a écrit dans le message de news:
| >
| > | Bonjour nouveau venu en Excel VBA et macros
| > | comment rendre systématique, la gestion de l'événement Worksheet change dans
| > | la feuille 1 de TOUT classeur ouvert
| > | par exemple
| > |
| > | Sub Worksheet_Change(ByVal Target As Range)
| > | Target.Interior.ColorIndex = 4
| > | End sub
| > | Cette routine mis dans le code de la feuille 1 du classeur ouvert (clique
| > | droit sur onglet feuille1/code) fonctionne
| > |
| > | Je souhaite que cette routine fonctionne pour la feuille_1 de TOUT classeur
| > | : NOUVEAU ou EXISTANT
| > | j'ai essayé via XLA: ai mis cette routine dans Feuil1 du projet mySub.xla,
| > | ai ouvert un nouveau classeur, ai activé macro complémentaire mySub, mais ne
| > | fonctionne pas
| > |
| > | Merci poir votre aide
| >
| >
| >