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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
'--------------------------------------------------------
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
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
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.