Masquage de lignes via cases à cocher

Choops

XLDnaute Occasionnel
Bonjour à tous,

comment faire en sorte que lorsque l’on désélectionne une case d'option d'une colonne, la ligne correspondante soit masquée dans toutes les feuilles précédentes càd de sem1 à sem6 ?

C’est vraiment un numéro de ligne que je voudrais pouvoir masquer et non une ligne parce qu’il y a écrit telle chose dans telle cellule. L’intérêt est que si je rajoute des nouvelles tâche en cours d’année, ça ne sera pas trop compliqué de mettre le code à jour.

Merci d’avance!
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Re-,
dans ton code initial, tu faisais référence à la colonne A

Code:
Range(Cells(25, 35), Cells([A65000].End(xlUp).Row, 35))

[A65000].End(xlUp).Row te donne le numéro de la dernière ligne non vide dans la colonne A, c'est à dire 1 dans ton exemple, la colonne A étant vide.....
En mettant B, tu arrives donc à la ligne 154
 

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Bonjour bhbh, je vais encore t'embêter avec cette histoire car lors de l'implantation du code dans le fichier final avec les 53 feuilles, celui-ci devient très très lent lors de son exécution: quand on double clique sur les nom des tâches (ds le "tableau de bord", feuille "controle"), les lignes mettent quasi 30 secondes pour se masquer ds l'ensemble des feuilles.

Serait-il possible de modifier le code pour que lorsqu'on double clique sur une tâche, cela inscrive bien une croix ds la colonne à côté, mais que cela ne masque pas la ligne correspondante tout de suite. Ensuite un bouton serait relié à une macro qui masquerait toutes les lignes comprises entre 25 et 154 où il n'y a pas de croix en AI25 à AI154.

Un autre bouton (comme le double clic sur la cellule "Remet" permettrait de réafficher toutes les lignes).

J'espère que ce n'est pas trop compliqué, en tout cas je t'en (vous en) remercie par avance!!
 

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Bonsoir,
le code repensé, les lignes ne vont se masquer que si la feuille est activée

dans le code de la feuille controle, mets ceci :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 32 Then
Cells(ActiveCell.Row, 35) = IIf(Cells(ActiveCell.Row, 35).Value = "X", "", "X")
ElseIf Target.Address = "$AH$19" Then
Range(Cells(25, 35), Cells([B65000].End(xlUp).Row, 35)).Value = "X"
End If
Cancel = True
End Sub

et dans le ThisWorkbook :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.ScreenUpdating = False
If ActiveSheet.Name <> "Controle" Then
Cells.EntireRow.Hidden = False
On Error Resume Next
    For Each cel In Sheets("Controle").Range("AI25:AI154").SpecialCells(xlCellTypeBlanks)
        Cells(cel.Row, 1).EntireRow.Hidden = True
    Next cel
On Error GoTo 0
End If
Application.ScreenUpdating = True
End Sub
 

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Merci bhbh ton code fonctionne bien avec le fichier que j'ai fourni via cjoint mais reste lourd pour le fichier final (45 sec en moyenne pour l'ouverture de chaque onglet). Ce que je ne comprends pas c'est pourquoi quand je sélectionne les 53 feuilles puis masque une ligne, cela se fait sans délai alors qu'avec un code, cela prend plus de 30 sec par opération.

En procédant avec un bouton, peut être que cela mettra aussi 30-45 sec mais au moins on pourra sauvegarder une fois pour toute la configuration des lignes masquées ?
 

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Re-,
rajoute cette ligne en début de code :

Code:
Application.Calculation = xlCalculationManual

et en fin de code :

Code:
Application.Calculation=xlCalculationAutomatic

On passe en calcul manuel en début de code, puis en automatique en fin de code, ce qui évite tous les recalculs pendant l'opération.
Car traiter au maximum 30 lignes ne doit jamais prendre 30 à 40 secondes...
 

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Merci, cela prend désormais moins de temps (à peu près 2s). Je ne voudrais pas abuser car cette solution me convient mais serait-il quand même possible de faire en sorte que le calcul du masquage des lignes sur les 53 feuilles ne se fasse qu'une fois (lors d'un clic sur un bouton présent sur la feuille controle) comme ça il n'y a pas de temps d'attente lors du passage d'un onglet à un autre ?

Merci encore !
 

Cousinhub

XLDnaute Barbatruc
Re : Masquage de lignes via cases à cocher

Re-,
dans ce cas, tu reprends le même code que précédemment, en y ajoutant les deux lignes de code que je t'ai transmis.
Toujours est-il que chez moi, il ne faut pas 2 secondes pour une feuille, c'est immédiat.....:confused:
 

Choops

XLDnaute Occasionnel
Re : Masquage de lignes via cases à cocher

Re, je ne comprends pas trop ta réponse car j’ai déjà intégré au code les 2 lignes que tu m’as transmises 3 posts auparavant. :confused:

Pour les 2 secondes par feuille, c’est parce que je n’ai pas pu uploader le fichier original car trop volumineux. Du coup, les calculs s’en retrouvent nettement ralentis par rapport au fichier allégé que j’ai fourni via cjoint.

Tiens moi au courant! :)
 

Discussions similaires

Réponses
5
Affichages
579
Réponses
2
Affichages
395
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 753
Messages
2 091 672
Membres
105 041
dernier inscrit
CHERRIERE