XL 2016 Masquer des lignes Excel

Benjamin C.

XLDnaute Nouveau
Bonjour à tous,

Je suis à la recherche d'un moyen pour masquer certaines lignes d'une feuille excel en fonction des valeurs d'un tableau.
Je m'explique. Je voudrais supprimer les lignes pour lesquelles la valeur de la colonne du milieu est égale à 0. Pour cela rien de plus simple me direz-vous à raison, il me suffit d'utiliser la fonction filtre. Mon problème est qu'à droite de ce tableau, est accolé un autre tableau, qui doit quant à lui rester entier avec TOUTES ses lignes affichées.

Vous l'aurez compris je cherche à "figer" mon tableau de droite, tout en jouant à l'aide du filtre sur mon tableau de gauche.

Si quelqu'un sait comment m'aider, je lui en serais extrêmement reconnaissant, je perds patience après plusieurs heures de recherche !! ;)

Merci !!
 

Phil69970

XLDnaute Barbatruc

Benjamin C.

XLDnaute Nouveau
Bonjour @Benjamin C.

Attention au vocabulaire employé

et

Masquer et supprimer c'est pas pareil

Question que veux tu faire ? (Masquer ou supprimer)

Est ce un tableau structuré ou pas ?

Un fichier représentatif et respectant le RGPD serait le bienvenu avec tes attendus.

@Phil69970
Bonjour Phil,

Merci pour ta réponse. Autant pour moi, je voulais bien dire masquer et non supprimer. Je mets ci-joint un exemple de ce à quoi représente mes données. L'objectif est de masquer les lignes du tableau de gauche pour lesquelles la valeur est 0 dans "Colisage", tout en gardant les 2 tableaux de droite intact.

Bien à toi,

Benjamin
 

Pièces jointes

  • Exemple fichier 1.xlsx
    15.5 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonjour Benjamin C., Phil69970,

Oui il faut supprimer mais ensuite on peut restituer le tableau d'origine, ce qui revient à masquer :
VB:
Sub Masquer()
Dim F As Worksheet, P As Range, tablo, ncol%, i&, n&, j%
Set F = Feuil1 'CodeName
Set P = F.[B4].CurrentRegion
If Application.CountIf(P.Columns(2), 0) = 0 Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next 'si la feuille Memo n'existe pas
Sheets("Memo").Delete
With Sheets.Add(After:=F) 'crée la feuille
    .Name = "Memo"
    P.Copy .[A1]
    .Visible = xlSheetHidden 'xlSheetVeryHidden 'masque la feuille
End With
tablo = P.FormulaR1C1 'matrice, plus rapide
ncol = UBound(tablo, 2)
For i = 1 To UBound(tablo)
    If tablo(i, 2) <> "0" Then
        n = n + 1
        For j = 1 To ncol
            tablo(n, j) = tablo(i, j)
        Next j
    End If
Next i
P.Resize(n) = tablo
P(1).Offset(n).Resize(F.Rows.Count - n - P.Row + 1, ncol).Delete xlUp 'RAZ en dessous
P.Borders(xlEdgeBottom).Weight = xlMedium 'bordure inférieure
End Sub

Sub Afficher()
On Error Resume Next
Sheets("Memo").[A1].CurrentRegion.Copy Feuil1.[B4] 'restitue le tableau d'origine
End Sub
Nota : il y avait des formules de liaison en colonne C, je les ai supprimées.

A+
 

Pièces jointes

  • Exemple fichier(1).xlsm
    25.3 KB · Affichages: 9

Benjamin C.

XLDnaute Nouveau
Bonjour Benjamin C., Phil69970,

Oui il faut supprimer mais ensuite on peut restituer le tableau d'origine, ce qui revient à masquer :
VB:
Sub Masquer()
Dim F As Worksheet, P As Range, tablo, ncol%, i&, n&, j%
Set F = Feuil1 'CodeName
Set P = F.[B4].CurrentRegion
If Application.CountIf(P.Columns(2), 0) = 0 Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next 'si la feuille Memo n'existe pas
Sheets("Memo").Delete
With Sheets.Add(After:=F) 'crée la feuille
    .Name = "Memo"
    P.Copy .[A1]
    .Visible = xlSheetHidden 'xlSheetVeryHidden 'masque la feuille
End With
tablo = P.FormulaR1C1 'matrice, plus rapide
ncol = UBound(tablo, 2)
For i = 1 To UBound(tablo)
    If tablo(i, 2) <> "0" Then
        n = n + 1
        For j = 1 To ncol
            tablo(n, j) = tablo(i, j)
        Next j
    End If
Next i
P.Resize(n) = tablo
P(1).Offset(n).Resize(F.Rows.Count - n - P.Row + 1, ncol).Delete xlUp 'RAZ en dessous
P.Borders(xlEdgeBottom).Weight = xlMedium 'bordure inférieure
End Sub

Sub Afficher()
On Error Resume Next
Sheets("Memo").[A1].CurrentRegion.Copy Feuil1.[B4] 'restitue le tableau d'origine
End Sub
Nota : il y avait des formules de liaison en colonne C, je les ai supprimées.

A+
Re-bonjour Job,

Il semblerait que ça marche, seul bémol, j'ai d'autres feuilles de calcul dans ce tableau, et quand je clique sur masquer, la macro se fait bien mais il me transfère instantanément une autre feuille. Le problème ne se fait pas quand j'appuie sur le bouton afficher.

Une idée ?
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 969
Membres
103 072
dernier inscrit
Remithesix