Aide sur cette macro de Masquage de lignes

Mister Binaire

XLDnaute Occasionnel
Bonjour le Forum,

J'ai cette macro (voir ci-dessous) qui me permet de masquer des lignes pour ajuster un tableau de synthèse.

Le problème que je rencontre est le suivant : Lorsque je retourne sur une autre feuille et que je reviens sur la feuille contenant cette macro le masquage des lignes a disparu ?? .

Pouvez-vous m'aider pour que mes lignes masquées restent figées.

Merci de votre aide

Option Explicitl

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Rows.Hidden = False 'affiche toutes les lignes de l'onglet
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim PL As Range 'déclare la variable PL (Plage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set PL = Range("A6:A43") 'définit la plage PL
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub 'si le double-clic a lieu ailleurs que dans la plage PL, sort de la procédure
Cancel = True 'annule le mode [édition] lié au double-clic
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Select Case Target.Value 'agit en fonction de la valeur de la cellule double-cliquée
Case Is <> "" 'si la cellule n'est pas vide
Rows.Hidden = False 'affiche toutes les lignes de l'onglet
Case Else 'tous les autres cas
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
If CEL.Value = "" Then Rows(CEL.Row).Hidden = True 'si la valeur de la cellule CEL est vide, masque la ligne de la cellule CEl
Next CEL 'prochaine cellule de la boucle
End Select 'fin de l'action en fontion de la valeur de la cellule double-cliquée
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
 

WDAndCo

XLDnaute Impliqué
Re : Aide sur cette macro de Masquage de lignes

Bonjour le Forum

Il y a :
Rows.Hidden = False 'affiche toutes les lignes de l'onglet
Il faut :
'Rows.Hidden = False 'affiche toutes les lignes de l'onglet
ou
Rows.Hidden = True 'n affiche pas toutes les lignes de l'onglet
 

Mister Binaire

XLDnaute Occasionnel
Re : Aide sur cette macro de Masquage de lignes

Merci de ta réponse WDandCO.

Quand j'arrive sur la feuille il faut que toutes lignes soient visibles pour rentrer les données puis après je double clic dans la ligne vide en dessous de la dernière remplie et le tableau s'ajuste au nombre de lignes remplies.
Cependant si je retourne sur une autre feuille et que je reviens sur la feuille avec les lignes masquées le masquage à disparu.

Le changement de la ligne de code n'a rien donné
 

TooFatBoy

XLDnaute Barbatruc
Re : Aide sur cette macro de Masquage de lignes

Bonjour,

Quand j'arrive sur la feuille il faut que toutes lignes soient visibles
C'est ce que fait ta macro Worksheet_Activate(). Mais ça le fait à chaque fois que tu actives l'onglet en question biensûr.

Il faudrait peut-être passer par un drapeau, dans une variable booléenne ou dans une cellule de la feuille.


Ceci dit, le critère permettant de savoir si toutes les lignes doivent être affichées, ou si certaines doivent être cachées, lors de l'activation de l'onglet, risque de ne pas être simple à déterminer.
Un bouton permettant de cacher certaines lignes ou de les montrer serait certainement le plus simple.
 
Dernière édition:

Mister Binaire

XLDnaute Occasionnel
Re : Aide sur cette macro de Masquage de lignes

Merci de ta réponse Marcel32.

Oui pas évident car toutes les lignes doivent être montrer quand l'utilisateur arrive sur la feuille.
Une fois le tableau ajusté (lignes masquées) le tableau est fini et il ne faudrait pas qu'au retour sur la feuille que toutes les lignes soient démasquées autre que par le double clic si l'opérateur veut rajouter des datas .

Si quelqu'un a une piste, je suis preneur !!
 

TooFatBoy

XLDnaute Barbatruc
Re : Aide sur cette macro de Masquage de lignes

Juste une idée comme ça : tu peux utiliser une cellule, disons A1, comme drapeau pour savoir si ton tableau est terminé ou pas.

Au départ, la cellule est vide.
Dans ta macro qui cache les lignes désirées, tu mets une valeur (par exemple "Tableau terminé") dans cette cellule.
Ainsi, dans ta macro d'activation de la feuille, tu testes le contenu de cette cellule et tu agits en fonction.

Code:
Private Sub Worksheet_Activate()

    Application.ScreenUpdating = False 'masque les rafraîchissements d'écran

    If ActiveSheet.Range("A1").Value = "" Then Rows.Hidden = False 'affiche toutes les lignes de l'onglet

    Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran

End Sub
 
Dernière édition:

Mister Binaire

XLDnaute Occasionnel
Re : Aide sur cette macro de Masquage de lignes

Merci de ton aide Marcel32.

Cela marche à merveille il suffisait de mettre un flag : si A1 est vide alors je développe tout sinon je m'arrête à la dernière ligne remplit et je masque le reste.

Encore merci de ton aide...
 

Discussions similaires

Réponses
2
Affichages
147
Réponses
6
Affichages
131

Statistiques des forums

Discussions
312 196
Messages
2 086 087
Membres
103 116
dernier inscrit
kutobi87