macro événementielle ignore [NomDesLignes].EntireRow.Hidden = True

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Le problème n'est pas compliqué, mais pas facilement explicable, aussi vais-je tâcher d'être le plus concis possible...

J'ai rédigé une macro événementielle située dans la feuille où elle doit automatiquement s'exécuter suivant les circonstances.
La macro se présente ainsi :
Private Sub Worksheet_Change(ByVal Target As Range)

'Le contenu de la macro

End Sub

et elle fonctionne parfaitement bien.

En fonction de certains événements la macro occulte où fait apparaître des lignes.
Récemment, sur ce même forum, on m'a transmis une astuce permettant d'y arriver d'une manière élégante au moyen de la syntaxe :
[NomDesLignes].EntireRow.Hidden = True ou False

Je précise que "NomDesLignes" se décline au pluriel car il regroupe 2 lignes contiguës, parfois 4 (toujours contiguës).

Et ça marche très bien !

Toutes les lignes qui doivent être gérées par la macro ont été nommées afin d'éviter de manipuler des références fastidieuses et source d'erreurs dans les macros, au cas où je désirerais rajouter dans ma feuille une ou plusieurs lignes.

Il se trouve que, suivant les événements, plusieurs groupes de 2, voire 4 lignes doivent simultanément apparaître ou disparaître. En conséquence, ma syntaxe sera (s'il s'agit de 3 groupes de lignes) :
[NomDesLignes1,NomDesLignes2,NomDesLignes3].EntireRow.Hidden = True (ou False)

Bizarrement, dans ma macro événementielle, quand je choisis de traiter plusieurs lignes (en fait plusieurs groupes de 2 lignes, parfois de 4) à la fois par l'intermédiaire de la syntaxe ci-dessus, et bien plus rien ne se passe !
Intrigué, j'ai réalisé un test avec une macro indépendante :
Sub Macro1()

[NomDesLignes1,NomDesLignes2,NomDesLignes3].EntireRow.Hidden = True (ou False)

End Sub

Ça marche très bien !

Maintenant, dans ma macro événementielle je remplace :
[NomDesLignes1,NomDesLignes2,NomDesLignes3].EntireRow.Hidden = True (ou False)
par :
Range("142:143,165:168,181:182").EntireRow.Hidden = True (ou False)
autrement dit les références des lignes nommées, et bien alors ça marche très bien.

Où ai-je commis une bourde ?

Un grand merci pour me l'expliquer.
 
Re : macro événementielle ignore [NomDesLignes].EntireRow.Hidden = True

Merci pour cette astuce que je ne connaissais pas et que je vais essayer.

Leçon personnelle d'humilité. Après avoir adressé ma requête, j'ai relu ma macro et, là, la bourde m'a sauté aux yeux : suivant l'événement, j'écrivais toujours :
[NomDesLignes1,NomDesLignes2,NomDesLignes3].EntireRow.Hidden = True
et non pas False dans le cas contraire.
Donc tout restait figé !

Tête basse, je crois que je vais aller me coucher !

Mais encore merci pour vos conseils.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
354
Réponses
5
Affichages
592
Réponses
17
Affichages
2 K
Retour