Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Masquer colonnes et lignes

3 réponses
Avatar
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

3 réponses

Avatar
MichD
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
Avatar
MichD
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
Avatar
Brat'ac
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.