Problème avec Worksheet_SelectionChange(ByVal Target As Range)...

rouillld

XLDnaute Nouveau
Bonjour à tous,

La macro ci-dessous est censée fonctionner si la valeur d'une cellule déterminée par une liste déroulante est égale à 1 :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("K2") = 1 Then Call Selection_zone_locaux
End Sub

Le problème est que cette macro ne se lance jamais dans mon "vrai" fichier de travail (que je ne peux envoyer ici par pièce jointe, celui-ci dépassant largement les 50 ko maxi même zippé)... alors qu'il n'y a aucun problème dans le fichier exemple joint, qui a aimablement été modifié par un utilisateur de ce forum.

Est-il possible qu'une autre macro soit en "conflit" avec la private Sub décrite ci-dessus ? J'ai déjà essayer de rajouter Application.EnableEvents = True, mais rien y fait.

Merci d'avance pour vos réponses.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème avec Worksheet_SelectionChange(ByVal Target As Range)...

Bonjour Rouillld, bonjour le forum,

Peut-être une piste... Vérifie que dans le code il n'y a nulle part :
Code:
Application.EnableEvents = False
En effet, cette ligne doit toujours être complétée par son contraire True. Mais si par hasard la macro a planté avant de repasser par le True, tu te retrouves sans aucune macro événementielle qui fonctione...
 

rouillld

XLDnaute Nouveau
Re : Problème avec Worksheet_SelectionChange(ByVal Target As Range)...

Merci pour vos réponses :
Tatiak : ta macro ne marche malheureusement pas. Qu'apporterait-elle par rapport à
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("K2") = 1 Then Call Selection_zone_locaux
End Sub
?
Robert : J'ai enlevé les Application.EnableEvents, pour voir, puis essayé en forçant avec Application.EnableEvents = True
Rien ne marche, là je ne comprends vraiment pas... Pourrait-il avoir d'autres raisons ? Je ne sais pas, un truc qui reste en mémoire ou autre....
 

rouillld

XLDnaute Nouveau
Re : Problème avec Worksheet_SelectionChange(ByVal Target As Range)...

Désolé (je suis chiant je sais :) )mais ce n’est pas ce que je veux faire…

Je reprends tout, je n’ai sans doute pas été très clair. J’ai mis l’onglet complet de mon fichier en pièce jointe, peut-être qu’il y a quelque chose qui m’échappe.

En gros, les sélections disponibles dans les listes déroulantes correspondent à des profils d’affichage.
La première liste déroulante appelle des macros qui masquent ou affichent certains types de lignes suivant la valeur de la colonne B.

La seconde liste déroulante appelle différentes macros qui :
- affichent ou masquent des colonnes
- affichent ou masquent des lignes

Quand la première liste déroulante est sur la position « tout afficher », la valeur de la cellule associée K2 est 1. Mon but est d’appeler la macro « Selection_zone_locaux » (cette macro me permet de faire des sélections plus pratiques pour moi, et elle fonctionne très bien, sauf que je dois la relancer à chaque sélection, d’où le code ci-dessous) tant que la valeur de la cellule K2 est égale à 1. Dès que cette valeur est différente de 1, la macro ne doit plus être active.

C’est là que le code suivant devait intervenir pour réaliser mes voeux :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("K2") = 1 Then Call Selection_zone_locaux
End Sub

Dans le fichier “light” transmis ce matin, ça marchait très bien, par contre, ça ne marche plus du tout dans le fichier ci-joint pour une raison que j’ignore… En effet, il n’y a pas de Application.EnableEvents = False dans le code, qui pourrait empêcher cette macro événementielle de fonctionner.

Juste pour info, la macro « Selection_zone_locaux » me permet de sélectionner d’un seul coup toutes les lignes ayant la même valeur dans la colonne D(lignes de zone et de sous-zone), quand une ligne de « zone » (ayant une valeur 2 dans la colonne B) est sélectionnée.

Help please ! Merci d’avance à toutes et à tous.
 

Pièces jointes

  • Classeur1.zip
    44.7 KB · Affichages: 40
  • Classeur1.zip
    44.7 KB · Affichages: 40
  • Classeur1.zip
    44.7 KB · Affichages: 41

rouillld

XLDnaute Nouveau
Re : Problème avec Worksheet_SelectionChange(ByVal Target As Range)...

Mouais,
Pour commencer, je persiste à te conseiller de préférer l'utilisation de select case (comme indiqué précédemment) aux successions de if then.
=> Je m'en rends bien compte, j'ai fait la modification.
Ensuite, les macro événementielles ne fonctionnent que si elles sont situées dans le code de la feuille correspondante, soit en l'espèce dans le code de Feuil1
C'est exactement l'erreur que j'avais commise. Merci de l'info !
:) tatiak

Merci à tous pour vos réponses !

Le sujet peut être clos dorénavant...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 400
Messages
2 088 086
Membres
103 711
dernier inscrit
mindo