XL 2016 Masquer des lignes + 2 lignes supplémentaires

Stéfane

XLDnaute Junior
Bonjour à tous,

Je viens vous demander de l'aide pour cette formule qui permet de filtrer les lignes 0,00%.
Je souhaiterais également pouvoir enlever les 2 lignes juste au dessus de celle masquée (0,00%) car il s'agit de l'entête de celle-ci.
Auriez-vous une idée ?
Merci.

Sub masquerlignes()

For Each Cell In ActiveSheet.Range("R41:R46")
If Cell.Value = "0,00%" Then
Columns("R:R").Select
Range("R25").Activate
Selection.AutoFilter
ActiveSheet.Range("$R$41:$R$43").AutoFilter Field:=1, Criteria1:="=R% SC" _
, Operator:=xlOr, Criteria2:="="

'Else
'Rows("26:28").Hidden = False
End If
Next
End Sub
 

Stéfane

XLDnaute Junior
Bonjour Robert,

Merci pour ton aide.
Les deux lignes à masquer se trouvent juste au dessus de la ligne pour lesquelles la formule me permet de supprimer la valeur.
Il est difficile de joindre un document car i s'agit d'un document commercial propre à ma société.
Cela ressemble a ça Je souhaiterais masquer les lignes pppppppp et rr
Merci.
 

Pièces jointes

  • 1644591204497.png
    1644591204497.png
    1.1 KB · Affichages: 8

Robert

XLDnaute Barbatruc
Re,

Toujours pas très bien compris. Il est tellement facile avec Excel de créer un exemple anonymiser reprenant l'environnement de ton fichier original !...
Essaie comme ça :

VB:
Sub masquerlignes()
Dim CEL As Range
For I = 41 To 46
    Debug.Print ActiveSheet.Cells(I, "R").Value
    If ActiveSheet.Cells(I, "R").Value = 0 Then
        ActiveSheet.Rows(I - 2 & ":" & I).Hidden = True
    End If
Next
End Sub
 

Stéfane

XLDnaute Junior
Re,

Toujours pas très bien compris. Il est tellement facile avec Excel de créer un exemple anonymiser reprenant l'environnement de ton fichier original !...
Essaie comme ça :

VB:
Sub masquerlignes()
Dim CEL As Range
For I = 41 To 46
    Debug.Print ActiveSheet.Cells(I, "R").Value
    If ActiveSheet.Cells(I, "R").Value = 0 Then
        ActiveSheet.Rows(I - 2 & ":" & I).Hidden = True
    End If
Next
End Sub
Bonjour Robert,

J'ai essayer à plusieurs reprises ta formule mais aucune ligne n'a été masquée et aucune n'a été sélectionnée.
Peut-être parce que mon tableau original est un croisé dynamique.

J'ai suivi ton conseil et viens de terminer un tableau qui représente ce que je souhaite obtenir.

Merci encore pour ton aide.
 

Pièces jointes

  • TEST.xlsm
    16.5 KB · Affichages: 3

Robert

XLDnaute Barbatruc
Re,

Dans ton premier exemple tu parle de la plage R41:R46 donc cela ne concernait que les lignes 41 à 46. Maintenant que tu as enfin daigné envoyé un fichier, tout est différent. Le zéro de fait pas partie de la ligne en question mais se trouve dans un intervalle de lignes. Évidement le code fourni n'a rien à voir et je t'avoue que je n'ai pas de solution...
 

Stéfane

XLDnaute Junior
Re,
oui en fait le tableau fait environ 1700 lignes, j'ai avec bien du mal réussit a adapter cette formule qui fonctionne et masque les 0,00% pour ne laisser que les % supérieurs à 0:

Masque les "0,00%" des lignes
Rows("25:25").Select
Selection.AutoFilter
Range("r29").AutoFilter Field:=18, Criteria1:="<>0.00%"

Le problème c'est que cela me laisse les entêtes qu'il me faut cacher manuellement.

J'ai bien essayer avec les formules type :

If Rows("29:40").EntireRow.Hidden = True Then
Rows("26:28").EntireRow.Hidden = True
Else
Rows("26:28").EntireRow.Hidden = False
End If
Mais rien n'y fait, soit cela masque les entête ou lorsque je modifie la formule cela les laisse apparentent.
De plus cela m'oblige à mettre en œuvre une macro très longue sachant que ce tableau peut-être amené a évoluer.
D'où mon problème.
J'ai également essayé bien d'autre macro mais sans succés pour le moment.

Dans tout les cas merci pour ton aide.
 

Discussions similaires

Réponses
3
Affichages
720

Statistiques des forums

Discussions
298 814
Messages
1 971 986
Membres
203 580
dernier inscrit
Phinks