OVH Cloud OVH Cloud

procédures événementielles

6 réponses
Avatar
Xtof
Bonjour,
j'ai une petite question sur Les procédures événementielles,

Un petit exemple pour illustrer ma demande : A chaque fois que je
sélectionne une cellule dans la feuille, un MsgBox apparait en indiquant la
valeur de la cellule sélectionnée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MaCellule = Target.Value
MsgBox "la valeur de la cellule est : " & MaCellule
End Sub

Le code de cette procédure évènementielle est situé dans le code de la
feuille de calcul elle-même.


Ma question est la suivante :
Comment faire que cette procédure évènementielle fonctionne quel que soit le
fichier Excel ouvert via une macro complémentaire XLA?
La question est en fait de savoir quand l'utilisateur change de cellule pour
une XLA, afin d'appliquer une macro.

Je ne sais pas si je me suis bien exprimé dans ma requête

A+
Xtof

6 réponses

Avatar
michdenis
Bonjour Xtof,

Sauf errreur , je ne crois pas que ce que tu désires puisse être obtenu par un fichier XLA. Mais si tu le désires, tu
peux utiliser un module de classe.

Voici la démarche avec un module de classe :

A ) Insère un module de Classe : insertion / module de classe
B ) Baptise-le "MonApp" : La proprité Name de l'objet
C) Dans le module de classe : ajoute le code suivant

'Déclaration de la variable dans le haut du module
Public WithEvents XlEvent As Application

'----------------------------
Private Sub XlEvent_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Dim Message As String
Message = "Le nom du classeur est : " & Sh.Parent.Name & vbCrLf
Message = Message & "Le nom de la feuille est : " & Sh.Name & vbCrLf
Message = Message & "L'adresse de la cellule est : " & Target.Address

MsgBox Message

End Sub
'----------------------------

D ) Dans un module Standard :

'Déclaration de la variable dans le haut du module
Dim VarApp As New MonApp


'Tu exécutes cette procédure à l'ouverture du fichier en
'utilisant l'événement "Workbook_Open" situé dans le ThisWorkbook
'------------------------------
Sub InitialisationDeMonApp()

Set VarApp.XlEvent = Application

End Sub
'------------------------------


Si tu ouvres maintenant ce fichier ....tu vas pouvoir sélectionner la feuille et la cellule du classeur que tu désires
et avoir un message qui te retournera l'adresse de la cellule sélectionnée.


Salutations!












"Xtof" a écrit dans le message de news:
Bonjour,
j'ai une petite question sur Les procédures événementielles,

Un petit exemple pour illustrer ma demande : A chaque fois que je
sélectionne une cellule dans la feuille, un MsgBox apparait en indiquant la
valeur de la cellule sélectionnée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MaCellule = Target.Value
MsgBox "la valeur de la cellule est : " & MaCellule
End Sub

Le code de cette procédure évènementielle est situé dans le code de la
feuille de calcul elle-même.


Ma question est la suivante :
Comment faire que cette procédure évènementielle fonctionne quel que soit le
fichier Excel ouvert via une macro complémentaire XLA?
La question est en fait de savoir quand l'utilisateur change de cellule pour
une XLA, afin d'appliquer une macro.

Je ne sais pas si je me suis bien exprimé dans ma requête

A+
Xtof
Avatar
Alain CROS
Bonjour

Essaye comme ça.

Dans le module ThisWorkbook du xla

Dim WithEvents myxl As Excel.Application
Private Sub myxl_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
If ThisWorkbook.Sheets(1).Range("A1") = "" Then Exit Sub
If Evaluate("ISBLANK(" & Target.Address & ")") Then Exit Sub
MsgBox Target
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set myxl = Nothing
End Sub
Private Sub Workbook_Open()
Set myxl = Excel.Application
End Sub

Dans le module de chaque feuille du classeur pour lesquelles tu veux ce message

Private Sub Worksheet_Activate()
Workbooks("LeNomDeTonXla").Sheets(1).Range("A1") = ThisWorkbook.Name
End Sub
Private Sub Worksheet_Deactivate()
Workbooks("LeNomDeTonXla").Sheets(1).Range("A1") = ""
End Sub

Alain CROS

"Xtof" a écrit dans le message de news:
Bonjour,
j'ai une petite question sur Les procédures événementielles,

Un petit exemple pour illustrer ma demande : A chaque fois que je
sélectionne une cellule dans la feuille, un MsgBox apparait en indiquant la
valeur de la cellule sélectionnée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MaCellule = Target.Value
MsgBox "la valeur de la cellule est : " & MaCellule
End Sub

Le code de cette procédure évènementielle est situé dans le code de la
feuille de calcul elle-même.


Ma question est la suivante :
Comment faire que cette procédure évènementielle fonctionne quel que soit le
fichier Excel ouvert via une macro complémentaire XLA?
La question est en fait de savoir quand l'utilisateur change de cellule pour
une XLA, afin d'appliquer une macro.

Je ne sais pas si je me suis bien exprimé dans ma requête

A+
Xtof





Avatar
Xtof
Merci pour la réponse michdenis,
celà fonctionne et on peut même transformer ce fichier en xla
Je vais essayer avec ma macro et je reviendrais pour une aide si je bloque.

A+
Xtof

PS : ou peut on trouver des infos didactiques sur les modules de classes,
j'ai regardé sur Excelabo




"michdenis" a écrit dans le message de
news:
Bonjour Xtof,

Sauf errreur , je ne crois pas que ce que tu désires puisse être obtenu
par un fichier XLA. Mais si tu le désires, tu

peux utiliser un module de classe.

Voici la démarche avec un module de classe :

A ) Insère un module de Classe : insertion / module de classe
B ) Baptise-le "MonApp" : La proprité Name de l'objet
C) Dans le module de classe : ajoute le code suivant

'Déclaration de la variable dans le haut du module
Public WithEvents XlEvent As Application

'----------------------------
Private Sub XlEvent_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)


Dim Message As String
Message = "Le nom du classeur est : " & Sh.Parent.Name & vbCrLf
Message = Message & "Le nom de la feuille est : " & Sh.Name & vbCrLf
Message = Message & "L'adresse de la cellule est : " & Target.Address

MsgBox Message

End Sub
'----------------------------

D ) Dans un module Standard :

'Déclaration de la variable dans le haut du module
Dim VarApp As New MonApp


'Tu exécutes cette procédure à l'ouverture du fichier en
'utilisant l'événement "Workbook_Open" situé dans le ThisWorkbook
'------------------------------
Sub InitialisationDeMonApp()

Set VarApp.XlEvent = Application

End Sub
'------------------------------


Si tu ouvres maintenant ce fichier ....tu vas pouvoir sélectionner la
feuille et la cellule du classeur que tu désires

et avoir un message qui te retournera l'adresse de la cellule
sélectionnée.



Salutations!












"Xtof" a écrit dans le message de news:


Bonjour,
j'ai une petite question sur Les procédures événementielles,

Un petit exemple pour illustrer ma demande : A chaque fois que je
sélectionne une cellule dans la feuille, un MsgBox apparait en indiquant
la

valeur de la cellule sélectionnée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MaCellule = Target.Value
MsgBox "la valeur de la cellule est : " & MaCellule
End Sub

Le code de cette procédure évènementielle est situé dans le code de la
feuille de calcul elle-même.


Ma question est la suivante :
Comment faire que cette procédure évènementielle fonctionne quel que soit
le

fichier Excel ouvert via une macro complémentaire XLA?
La question est en fait de savoir quand l'utilisateur change de cellule
pour

une XLA, afin d'appliquer une macro.

Je ne sais pas si je me suis bien exprimé dans ma requête

A+
Xtof







Avatar
JpPradier
Bonjour Xtof
Sur ce site tu devrais trouver ton bonheur :
http://longre.free.fr

j-p
Avatar
Xtof
MERCI
j'y vais

A+
Xtof

"JpPradier" a écrit dans le message
de news:
Bonjour Xtof
Sur ce site tu devrais trouver ton bonheur :
http://longre.free.fr

j-p



Avatar
Xtof
Merci pour la réponse Alain,
Je vais essayer

A+
Xtof



"Alain CROS" a écrit dans le message de
news:%23v5xD%
Bonjour

Essaye comme ça.

Dans le module ThisWorkbook du xla

Dim WithEvents myxl As Excel.Application
Private Sub myxl_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
If ThisWorkbook.Sheets(1).Range("A1") = "" Then Exit Sub
If Evaluate("ISBLANK(" & Target.Address & ")") Then Exit Sub
MsgBox Target
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set myxl = Nothing
End Sub
Private Sub Workbook_Open()
Set myxl = Excel.Application
End Sub

Dans le module de chaque feuille du classeur pour lesquelles tu veux ce
message


Private Sub Worksheet_Activate()
Workbooks("LeNomDeTonXla").Sheets(1).Range("A1") = ThisWorkbook.Name
End Sub
Private Sub Worksheet_Deactivate()
Workbooks("LeNomDeTonXla").Sheets(1).Range("A1") = ""
End Sub

Alain CROS

"Xtof" a écrit dans le message de news:


Bonjour,
j'ai une petite question sur Les procédures événementielles,

Un petit exemple pour illustrer ma demande : A chaque fois que je
sélectionne une cellule dans la feuille, un MsgBox apparait en indiquant
la


valeur de la cellule sélectionnée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MaCellule = Target.Value
MsgBox "la valeur de la cellule est : " & MaCellule
End Sub

Le code de cette procédure évènementielle est situé dans le code de la
feuille de calcul elle-même.


Ma question est la suivante :
Comment faire que cette procédure évènementielle fonctionne quel que
soit le


fichier Excel ouvert via une macro complémentaire XLA?
La question est en fait de savoir quand l'utilisateur change de cellule
pour


une XLA, afin d'appliquer une macro.

Je ne sais pas si je me suis bien exprimé dans ma requête

A+
Xtof