masquer des lignes à partir d'une certaine ligne

  • Initiateur de la discussion yann
  • Date de début
Y

yann

Guest
Salut à tous,

j'ai une macro qui me permet de masquer / démasquer les lignes où les cellules de la colonnes 3 sont vides.

ça donne ça :

Private Sub ToggleButton1_Click()
If ToggleButton1 = True Then
ToggleButton1.Caption = "Afficher toutes les lignes"
Masquage
Else
ToggleButton1.Caption = "Masquer les lignes"
Demasquage
End If
End Sub

Private Sub Masquage()
Sheets("feuil1").Columns(3).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub

Private Sub Demasquage()
Rows.Hidden = False
End Sub

Par contre maintenant j'ai un souci...

car pour de simples raisons de présentation, je voudrais que ce masquage des lignes vierges ne commence qu'à partir de la ligne 5.
Or, avec ma macro, le masquage des lignes s'applique à toute la colonne...

quelqu'un pourrait il m'aider???

merci d'avance

yann
 
A

alain

Guest
Bonsoir,


Si tu modifies ta procérure de masquage comme ci-dessous, çà devrait marcher :


Private Sub Masquage()
ActiveSheet.UsedRange.Select
DerniereLigne = Selection.Rows.Count
Range("C5", "C" & CStr(DerniereLigne)).Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub


Bonne soirée.

@+
 
V

Vériland

Guest
Bonsoir Yann,

Essaye peut être avec ceci...

'============================================
Option Explicit

'Masquer rapidement un ensemble de lignes

Sub MasquerLignes()
Dim lignedebut, lignefin

lignedebut = InputBox("1ère ligne à masquer", "Masquer les lignes")
If lignedebut = "" Then Exit Sub
lignefin = InputBox("Dernière ligne à masquer", "Masquer les lignes")
If lignefin = "" Then Exit Sub

ActiveSheet.Rows(lignedebut & ":" & lignefin).Hidden = True

End Sub

'Masquer rapidement un ensemble de colonne

Sub MasquerColonnes()
Dim ColonneDebut, ColonneFin

ColonneDebut = InputBox("Première colonne à masquer :")
If ColonneDebut = "" Then Exit Sub
ColonneFin = InputBox("Dernière colonne à masquer :")
If ColonneFin = "" Then Exit Sub

If IsNumeric(ColonneDebut) Then ColonneDebut = NomCol(CInt(ColonneDebut))
If IsNumeric(ColonneFin) Then ColonneFin = NomCol(CInt(ColonneFin))

ActiveSheet.Columns(ColonneDebut & ":" & ColonneFin).Hidden = True

End Sub'============================================

A+Veriland.gif
 
Y

yann

Guest
Un grand merci à vous deux

je vais choisir la solution d'Alain car elle convient PARFAITEMENT.

Merci vériland... je garde bien au chaud ces quelques lignes de code car l'idée des imputbox peut être intéressante

bonne nuit et à bientôt pour de nouvelles aventures

yann
 
Y

yann

Guest
Allez... just eun petit commentaire sur ta solution Alain.

je ne sais pas pourquoi, mais quand je masque les lignes, ça "m'oublie" les 2 dernières!!!

j'ai donc fait un raccord en rajoutant + 2 :

DerniereLigne = Selection.Rows.Count + 2

mais j'aimerai quand même savoir pourquoi ces 2 dernières lignes ne sont pas pris en compte?

yann
 
Z

zon

Guest
Bonsoir à tous,


Yann, cela vient du Rows.count, si tu as les deux premieres lignes vides et que c'est la ligne 17 qui contient la derniere valeur de UsedRange
=>Rows.count sera = à 15....



A+++
 

Discussions similaires

Réponses
14
Affichages
343
Réponses
12
Affichages
556

Statistiques des forums

Discussions
312 184
Messages
2 086 008
Membres
103 089
dernier inscrit
johnjohn1969