Masquer colonnes et lignes
Le
Brat'ac

Bonjour,
J'ai fais une procédure qui permet de masquer les lignes et les
colonnes
à partir d'un certain niveau.
Sub Masquer(Ligne,Ligne_de_Debut As Integer)
Derlig = Range("A" & Rows.Count).End(xlUp).Row
Dercol = Cells(Ligne_de_Debut,
Cells.Columns.Count).End(xlToLeft).Column
With ActiveSheet
.Cells.Columns.Hidden = False
.Cells.Rows.Hidden = False
.Rows(Derlig + Ligne + 1 & ":" & Rows.Count).Hidden = True
Range(.Cells(1, Dercol), .Cells(1,
Columns.Count)).EntireColumn.Hidden = True
End With
End Sub
Je l'apelle comme ceci
Sub essai()
Masquer 25,10
End Sub
Ça fonctionne bien sauf 2 feuilles sur 20 j'ai beau chercher le
pourquoi
je galère.
Une piste serait la bienvenue.
Merci
J'ai fais une procédure qui permet de masquer les lignes et les
colonnes
à partir d'un certain niveau.
Sub Masquer(Ligne,Ligne_de_Debut As Integer)
Derlig = Range("A" & Rows.Count).End(xlUp).Row
Dercol = Cells(Ligne_de_Debut,
Cells.Columns.Count).End(xlToLeft).Column
With ActiveSheet
.Cells.Columns.Hidden = False
.Cells.Rows.Hidden = False
.Rows(Derlig + Ligne + 1 & ":" & Rows.Count).Hidden = True
Range(.Cells(1, Dercol), .Cells(1,
Columns.Count)).EntireColumn.Hidden = True
End With
End Sub
Je l'apelle comme ceci
Sub essai()
Masquer 25,10
End Sub
Ça fonctionne bien sauf 2 feuilles sur 20 j'ai beau chercher le
pourquoi
je galère.
Une piste serait la bienvenue.
Merci
Tu as probablement des objets dans la plage inoccupée par des données qui bloquent le
"masquage" des colonnes ou lignes.
Si tu ne les vois pas, ces objets peuvent être de largeur = 0 ou de hauteur = 0.
La procédure suivante supprime tous ces objets et commentaires qui pourraient exister à droite
de la dernière colonne ou en bas de la dernière ligne dans toutes les feuilles du classeur.
J'ai pris pour acquis que les feuilles ne sont pas protégées.
'--------------------------------------------------------
Sub test()
Dim Sh As Worksheet, DerLig As Long
Dim Obj As Shape, DerCol As Long
On Error Resume Next
For Each Sh In ThisWorkbook.Worksheets
With Sh
DerLig = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
DerCol = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column + 1
.Range(.Cells(DerLig, 1), .Cells(.Rows.Count, .Columns.Count)).EntireRow.ClearComments
.Range(.Cells(1, DerCol), .Cells(.Rows.Count,
.Columns.Count)).EntireColumn.ClearComments
End With
For Each Obj In Sh.Shapes
If Obj.TopLeftCell.Row >= DerLig Or Obj.BottomRightCell.Column >= DerCol Then
Obj.Delete
End If
Next
With Sh
.Range(.Cells(DerLig, 1), .Cells(.Rows.Count, .Columns.Count)).EntireRow.Hidden = True
.Range(.Cells(1, DerCol), .Cells(.Rows.Count, .Columns.Count)).EntireColumn.Hidden =
True
End With
Next
End Sub
'--------------------------------------------------------
MichD
messagerie. Tu dois les replacer dans Excel.
MichD
Super c'était bien ça.
Merci et bonne fin de soirée.