pierrotyahoo
XLDnaute Nouveau
Bonjour,
j'essaie de faire fonctionner une macro, mais impossible de l'exécuter sans avoir le message d'erreur 13, incompatibilité de type.
le but de la macro est d'enlever toutes les lignes qui sont, après mise à jour des données, vides.
la ligne que j'ai mis en rouge est d'après excel la source du problème.
voilà le code :
Sub cacher()
With Application
.ScreenUpdating = False
End With
'afficher toutes les lignes
Cells.Select
Selection.EntireRow.Hidden = False
Dim i, j, fin, fin2, compt As Integer
Dim cache As Object
Selection.SpecialCells(xlCellTypeLastCell).Select
fin = Selection.Row
fin2 = Selection.Column
'Parcourir les cellules
Set cache = Nothing
For i = 11 To fin
compt = 0
For j = 6 To fin2
If IsNumeric(Cells(i, j)) And Cells(i, j).Value <> 0 Then
compt = compt + 1
End If
Next j
'Si la ligne est totalement vide, enregistrer dans l'objet
If compt = 0 Then
If cache Is Nothing Then
Set cache = Rows(i & ":" & j)
Else
Set cache = Union(cache, Rows(i & ":" & j))
End If
End If
Next i
'cacher les lignes vides
If Not cache Is Nothing Then
cache.Select
Selection.EntireRow.Hidden = True
End If
ActiveSheet.Outline.ShowLevels RowLevels:=1
With Application
.ScreenUpdating = True
End With
MsgBox "Toutes les lignes non nulles sont affichées.", vbOKOnly
End Sub
si quelqu'un à une idée...ce serait avec plaisir !
merci beaucoup !
j'essaie de faire fonctionner une macro, mais impossible de l'exécuter sans avoir le message d'erreur 13, incompatibilité de type.
le but de la macro est d'enlever toutes les lignes qui sont, après mise à jour des données, vides.
la ligne que j'ai mis en rouge est d'après excel la source du problème.
voilà le code :
Sub cacher()
With Application
.ScreenUpdating = False
End With
'afficher toutes les lignes
Cells.Select
Selection.EntireRow.Hidden = False
Dim i, j, fin, fin2, compt As Integer
Dim cache As Object
Selection.SpecialCells(xlCellTypeLastCell).Select
fin = Selection.Row
fin2 = Selection.Column
'Parcourir les cellules
Set cache = Nothing
For i = 11 To fin
compt = 0
For j = 6 To fin2
If IsNumeric(Cells(i, j)) And Cells(i, j).Value <> 0 Then
compt = compt + 1
End If
Next j
'Si la ligne est totalement vide, enregistrer dans l'objet
If compt = 0 Then
If cache Is Nothing Then
Set cache = Rows(i & ":" & j)
Else
Set cache = Union(cache, Rows(i & ":" & j))
End If
End If
Next i
'cacher les lignes vides
If Not cache Is Nothing Then
cache.Select
Selection.EntireRow.Hidden = True
End If
ActiveSheet.Outline.ShowLevels RowLevels:=1
With Application
.ScreenUpdating = True
End With
MsgBox "Toutes les lignes non nulles sont affichées.", vbOKOnly
End Sub
si quelqu'un à une idée...ce serait avec plaisir !
merci beaucoup !