macro évènementielle

F

Francky

Guest
bonjour à tous et toutes

il y a quelque temps déja j'avais posé ici même une question concernant la faisabilité d'une grille d'emploi du temps scolaire qui existait sous EXCEL95 et qui transférée sous 2000 ne fonctionnait plus.
En effet sous 95 on saisissait un code matière dans une cellule ( ce qui évitait de taper la matière en entier ) et lorsque l'on quittait la cellule à l'aide des flèches la matière s'affichait ( du genre on tape "hg" et c'est "histoire-géographie" qui s'affiche, je vous assure on gagne un temps fou !!! ). Et biensur compatibilité descendante oblige il y a tout un ts de fonctions qui ne marchent plus ( comme les userform qui sous 95 étaient des feuilles et qui ne sont pas importés sous 2000 qui malgré tout y fait toujours référence ).

Mais sous 2000 cela ne marche pas, vous m'aviez donc proposé et je vous en remercie des menus déroulants pour choisir la matière et autres artifices mais cela ne m'a pas interessé car j'ai pas moins de 296 codes matière...et oui !!

Je me suis donc creusé la tête et j'ai fabriqué ma macro en paramètrant les 4 flèches de déplacement avec la fonction
"Application.OnKey(Key, Procedure)"

pour l'instant mon projet n'est pas fini et cette macro s'exécute automatiquement à l'ouverture du classeur et ne sert que dans une seule et unique feuille, mais le problème c'est qu'il y a des feuilles ou il est appréciable de se déplacer à l'aide des flêches et biensur il ne faut pas que cette macro s'exécute.

Alors voila ma question :
Où placer cette macro de telle manière qu'elle ne s'exécute que quand la feuille dans laquelle je l'utilise est active et ne s'exécute plus quand on active une autre feuille ( avec la fonction Application.OnKey "{key}", "" )?

merci d'avance et bonnes fêtes.
 
W

Wilfried

Guest
Salut francky,

Je ne suis pas un expert en 2000 mais sous 97 il faut placé ta macro dans la feuille concerné (si c'est la feuille 1, tu double clique sur cette dernière dans VBA et tu choisi le cas worksheets qui t'interresse.

Je pense que d'autre personne plus califier que moi en excel 2000 pourrons mieux te renseigner.

A+ et bonne fête de fin années.

Wilfried ;-)
 
F

Francky

Guest
Merci pour ta réponse j'ai inclus ce code dans la feuille en question :

'Application.OnKey "{DOWN}", "fleche_bas" 'définit la fonction de la touche FLECHE BAS
'Application.OnKey "{DEL}", "supprime_matiere" 'définit la fonction de la touche SUPPRIME

puis celle ci dans l'autre feuille :

Private Sub Worksheet_activate()
Application.OnKey "{DOWN}" 'rétablit la touche à sa fonction normale
Application.OnKey "{DEL}" 'rétablit la touche à sa fonction normale
End Sub

Mais ça ne marche pas !!!

Merci d'avance si quelqu'un peut me dépanner.
 
Y

Yeahou

Guest
Bonjour

De manière générique, tu peux utiliser

'dans thisworkbook
Private Sub Workbook_Open()
Application.OnSheetActivate = "Detection_Feuille"
End sub

'dans un module
Sub Detection_Feuille
If ActiveSheet.Name="Feuilleatraiter" then
'Code à exécuter si feuillebonne
Else
'Code à exécuter si feuille mauvaise
end if
end sub
 

Discussions similaires

Réponses
3
Affichages
216

Statistiques des forums

Discussions
312 497
Messages
2 088 988
Membres
104 000
dernier inscrit
dinelcia