Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(vba) procédures événementielles

4 réponses
Avatar
j-pascal
Dans le code qui suit (copyrights JB ;-) ), est-il possible d'ajouter une
procédure événementielle pour la Feuil16 par exemple ?

J'ai essayé d'ajouter un test conditionnel au présent code, mais ça ne
fonctionne pas. Y-a-t-il incompatibilité ?
J'ai même essayé de créer une autre procédure directement dans la feuille
15, en vain !
(Si on cliquait sur l'onglet de la Feuil15, ça sélectionnerait la cellule A1
par ex., mais peu importe, le pb est pour l'instant de déclencher
l'événement) :

'----------------------------------
Dans ThisWorkBook:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index >= 5 And Sh.Index <= 16 Then
MsgBox Sh.Name
End If
End Sub

'----------------------------------

Merci d'avance pour votre aide !

--
Cordialement @+
JP

4 réponses

Avatar
JB
On peut associer un événement Worksheet_Activate propre à chacune des
feuilles:

Pour la feuille15 par ex:

Private Sub Worksheet_Activate()
[A1].Select
End Sub

Si Workbook_SheetActivate() a été également programmé, c'est
Worksheet_Activate() qui est exécuté en premier.

JB


On 14 sep, 22:41, "j-pascal" wrote:
Dans le code qui suit (copyrights JB ;-) ), est-il possible d'ajouter une
procédure événementielle pour la Feuil16 par exemple ?

J'ai essayé d'ajouter un test conditionnel au présent code, mais ça ne
fonctionne pas. Y-a-t-il incompatibilité ?
J'ai même essayé de créer une autre procédure directement dans la feuille
15, en vain !
(Si on cliquait sur l'onglet de la Feuil15, ça sélectionnerait la cel lule A1
par ex., mais peu importe, le pb est pour l'instant de déclencher
l'événement) :

'----------------------------------
Dans ThisWorkBook:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index >= 5 And Sh.Index <= 16 Then
MsgBox Sh.Name
End If
End Sub

'----------------------------------

Merci d'avance pour votre aide !

--
Cordialement @+
JP


Avatar
LSteph
Bonsoir,

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index = 16 Then Call mamacro16
Select Case Sh.Index
Case 5 To 16
MsgBox Sh.Name
Case 5 To 19
MsgBox "ici faut plus que 16"
Case Else
MsgBox "Hors limites"
End Select
End Sub


Sub mamacro16()
msgbox "toto"
end sub

'lSteph

Dans le code qui suit (copyrights JB ;-) ), est-il possible d'ajouter
une procédure événementielle pour la Feuil16 par exemple ?

J'ai essayé d'ajouter un test conditionnel au présent code, mais ça ne
fonctionne pas. Y-a-t-il incompatibilité ?
J'ai même essayé de créer une autre procédure directement dans la
feuille 15, en vain !
(Si on cliquait sur l'onglet de la Feuil15, ça sélectionnerait la
cellule A1 par ex., mais peu importe, le pb est pour l'instant de
déclencher l'événement) :

'----------------------------------
Dans ThisWorkBook:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index >= 5 And Sh.Index <= 16 Then
MsgBox Sh.Name
End If
End Sub

'----------------------------------

Merci d'avance pour votre aide !



Avatar
j-pascal
Re,

Parfait !
De mon côté, j'avais fait : "Private Sub thisWorkSheet_Activate()" ;-(

Merci ++

PS : ce qui est étonnant, c'est que ladite cellule est sélectionnée alors
que la Feuille est protégée et qu'on ne peut (théoriquement) pas
sélectionner les cellules verrouillées !
Le pb (qui n'est pas très grave ;-) ) c'est que ladite cellule reste
sélectionnée (cadre ...) et que rien ne permet de la "déselectionner"
puisque la Feuille est protégée !
Peut-on désélectionner une cellule sélectionnée ?

@+ ?

JP

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

On peut associer un événement Worksheet_Activate propre à chacune des
feuilles:

Pour la feuille15 par ex:

Private Sub Worksheet_Activate()
[A1].Select
End Sub

Si Workbook_SheetActivate() a été également programmé, c'est
Worksheet_Activate() qui est exécuté en premier.

JB


On 14 sep, 22:41, "j-pascal" wrote:
Dans le code qui suit (copyrights JB ;-) ), est-il possible d'ajouter une
procédure événementielle pour la Feuil16 par exemple ?

J'ai essayé d'ajouter un test conditionnel au présent code, mais ça ne
fonctionne pas. Y-a-t-il incompatibilité ?
J'ai même essayé de créer une autre procédure directement dans la feuille
15, en vain !
(Si on cliquait sur l'onglet de la Feuil15, ça sélectionnerait la cellule
A1
par ex., mais peu importe, le pb est pour l'instant de déclencher
l'événement) :

'----------------------------------
Dans ThisWorkBook:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index >= 5 And Sh.Index <= 16 Then
MsgBox Sh.Name
End If
End Sub

'----------------------------------

Merci d'avance pour votre aide !

--
Cordialement @+
JP


Avatar
j-pascal
Bonjour,

Merci.
Ca me rappelle que j'utilise trop rarement les "Case", alors que c'est si
pratique.

Bon week-end,

JP

"LSteph" a écrit dans le message de news:
%
Bonsoir,

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index = 16 Then Call mamacro16
Select Case Sh.Index
Case 5 To 16
MsgBox Sh.Name
Case 5 To 19
MsgBox "ici faut plus que 16"
Case Else
MsgBox "Hors limites"
End Select
End Sub


Sub mamacro16()
msgbox "toto"
end sub

'lSteph

Dans le code qui suit (copyrights JB ;-) ), est-il possible d'ajouter une
procédure événementielle pour la Feuil16 par exemple ?

J'ai essayé d'ajouter un test conditionnel au présent code, mais ça ne
fonctionne pas. Y-a-t-il incompatibilité ?
J'ai même essayé de créer une autre procédure directement dans la feuille
15, en vain !
(Si on cliquait sur l'onglet de la Feuil15, ça sélectionnerait la cellule
A1 par ex., mais peu importe, le pb est pour l'instant de déclencher
l'événement) :

'----------------------------------
Dans ThisWorkBook:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index >= 5 And Sh.Index <= 16 Then
MsgBox Sh.Name
End If
End Sub

'----------------------------------

Merci d'avance pour votre aide !