(vba) procédures événementielles

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4695131
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"
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


LSteph
Le #4695121
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 !



j-pascal
Le #4692911
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"
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"
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


j-pascal
Le #4692841
Bonjour,

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

Bon week-end,

JP

"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 !





Publicité
Poster une réponse
Anonyme