Masquer des lignes par VBA et les retirer du filtre automatique

citizenbaban

XLDnaute Junior
Bonjour le forum,

J'ai droit à une petite séance prise de tête avec une macro.
Je pars d'un simple tableau excel, sur environ 500 lignes pour une quinzaine de colonnes, en continuelle expansion lol.

Je souhaiterai masquer une ligne si dans la cellule de la colonne F, il est écrit "Oui" (ça c'est pas bien long) mais que cette ligne soit également masquée dans un filtre automatique, le but étant d'alléger visuellement le tableau, aussi bien filtré que non filtré.
C'est la que ça coince. Les lignes reviennent toujours.

Dans l'absolu, il faudrait que je puisse également réafficher les lignes masquées par un bouton (et par conséquent les réintégrer dans le filtre) pour des modifications éventuelles. Je ne me suis pas encore penché sur cette partie mais à froid, ça ne me parait pas insurmontable lol.

Mon gros problème vient surtout de la présence des lignes masquées dans les filtres.

P.S: nous sommes sur excel 2000 mais nous sommes en pleine migration sur le 2010 (de grands moments en perspective...)

Mais je sais qu'ici, ça ne restera pas un problème bien longtemps ^

D'avance merci.

Citizenbaban
 

job75

XLDnaute Barbatruc
Re : Masquer des lignes par VBA et les retirer du filtre automatique

Bonjour citizenbaban,

1) Pour créer l'évènement Calculate quand le filtrage est modifié, entrer par exemple en Z1 la formule :

Code:
=SOUS.TOTAL(3;A:A)
2) Dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Calculate()
Dim cel As Range, plage As Range
For Each cel In Range("F1", [F65536].End(xlUp))
  If UCase(cel) = "OUI" Then _
    Set plage = Union(cel, IIf(plage Is Nothing, cel, plage))
Next
If Not plage Is Nothing Then plage.EntireRow.Hidden = True
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Masquer des lignes par VBA et les retirer du filtre automatique

Re,

Pour tout afficher, cette macro à placer où vous voulez :

Code:
Sub Affiche()
ActiveSheet.AutoFilterMode = False 'ôte le filtre automatique
Application.EnableEvents = False 'désactive l'action des évènements
ActiveSheet.Rows.Hidden = False 'affiche toutes les lignes
Application.EnableEvents = True 'réactive l'action des évènements
End Sub
A cause de SOUS.TOTAL, il faut désactiver l'action de l'évènement Calculate.

A+
 

job75

XLDnaute Barbatruc
Re : Masquer des lignes par VBA et les retirer du filtre automatique

Re,

Sans doute plus simple :

Code:
Sub Affiche()
On Error Resume Next
Application.EnableEvents = False
ActiveSheet.ShowAllData
Application.EnableEvents = True
End Sub
Edit : mais avec cette macro le filtre doit être en place...

Bien sûr on affectera Affiche à un bouton (Formulaire ou ActiveX).

A+
 
Dernière édition:

citizenbaban

XLDnaute Junior
Re : Masquer des lignes par VBA et les retirer du filtre automatique

Merci Job45 pour tes réponses rapides.

Les macros tournent bien, les lignes se cachent et n'apparaissent pas dans les filtres.
Par contre, en annulant le filtre ("tous" dans la liste) les lignes masquées reviennent.
Je sais qu'un clic sur la macro Masquer les lignes et tout est arrangé mais est-il possible de le faire par défaut?

Sinon c'est déjà au top comme ça donc ne te casse pas la tête la dessus.


Sinon j'ai une petite question qui n'a pas grand chose à voir mais je ne pense pas qu'un nouveau sujet pour ça soit nécessaire.
Dans ce tableau, j'ai une colonne avec des dates et les semaines correspondantes.
En saisie, un double clic dans la cellule affiche la date du jour mais pas moyen de faire remplir le numéro de semaine automatiquement. Une idée pour ça?

Merci encore
 

job75

XLDnaute Barbatruc
Re : Masquer des lignes par VBA et les retirer du filtre automatique

Re,

Par contre, en annulant le filtre ("tous" dans la liste) les lignes masquées reviennent.

Pas d'accord, les "oui ne reviennent pas avec le filtre sur "Tous" : voir fichier joint.

Pour le n° de semaine il y a beaucoup d'exemples sur le forum, cherchez-les.

Tout dépend si on le détermine selon la norme ISO ou pas.

A+
 

Pièces jointes

  • Masquer sur filtre(1).xls
    28 KB · Affichages: 231

Statistiques des forums

Discussions
312 224
Messages
2 086 409
Membres
103 201
dernier inscrit
centrale vet