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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26432245
Bonjour,
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
MichD
Le #26432247
Attention, certaines lignes de code ont été coupées et réparties sur 2 lignes par le service de
messagerie. Tu dois les replacer dans Excel.
MichD
Brat'ac
Le #26432251
MichD a émis l'idée suivante :
Attention, certaines lignes de code ont été coupées et réparties sur 2 lignes
par le service de messagerie. Tu dois les replacer dans Excel.
MichD

Super c'était bien ça.
Merci et bonne fin de soirée.
Publicité
Poster une réponse
Anonyme