maquer colonne avec filtre

VALNOE

XLDnaute Nouveau
Bonjour,

j'ai créé une macro pour masquer les colonnes dont le contenu est vide. Cela fonctionne. Mais si je crée un filtre j'ai un message d'erreur, qu'est qui ne va pas ?

macro
Sub Masquer()
Dim i As Integer
Application.ScreenUpdating = False
Cells.Columns.Hidden = False
For i = 6 To 114
If Application.CountIf(Cells(6, i).Resize(125).SpecialCells(xlCellTypeVisible), "<>") = 0 Then
Columns(i).Hidden = True
Else
Columns(i).Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub


Message d'erreur
"erreur d'éxécution 13
incomptabilité de type


et j'ai la ligne ci-dessous en surbrillance

If Application.CountIf(Cells(6, i).Resize(120).SpecialCells(xlCellTypeVisible), "<>") = 0 Then

Quelqu’un peut il m'aider.

Merci d'avance
 

Papou-net

XLDnaute Barbatruc
Re : maquer colonne avec filtre

Bonsoir VALNOE,

Ne pouvant être affirmatif en raison de l'absence d'un fichier exemple, je te conseille de regarder du côté de "Resize".

En effet, cette fonction doit contenir deux valeurs: une pour le nombre de lignes, l'autre pour le nombre de colonnes. Ne sachant pas quelle doit être la plage, tu peux essayer

Resize(120, 0) pour redimensionner la plage sur 120 lignes

ou bien

Resize(0, 120) pour redimensionner la plage sur 120 colonnes

A +

Cordialement.
 

VALNOE

XLDnaute Nouveau
Re : maquer colonne avec filtre

Merci de ton aide.

Mon tableau comporte 114 colonnes et 125 lignes ; est ce qu'il faut que je mette resize(114,125) ?

Valérie
 

Pièces jointes

  • Vivier version du 210516.xlsm
    205 KB · Affichages: 27

Papou-net

XLDnaute Barbatruc
Re : maquer colonne avec filtre

RE:

Si j'ai bien compris le but de ta macro, il s'agit de masquer les colonnes qui ne contiennent aucune donnée?

C'est ce que fait le code ci-dessous:

Code:
Sub Masquer()
On Error Resume Next
Dim i As Integer, Col As Range
    Application.ScreenUpdating = False
    Cells.Columns.Hidden = False
    For i = 6 To 114
        Set Col = Feuil6.Cells(7, i).Resize(120, 1)
        If Col.SpecialCells(xlCellTypeConstants).Count = 0 Then
            Columns(i).Hidden = True
        Else
            Columns(i).Hidden = False
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
A +

Cordialement.
 

VALNOE

XLDnaute Nouveau
Re : maquer colonne avec filtre

Bonjour,

Merci cela fonctionne même quand j'applique un filtre mais il continue à prendre en compte les données des lignes qui sont masquées?

Est ce qu'il y aurait une solution pour qu'il prenne en compte que le contenu des lignes visibles.

Merci

Valérie
 

Papou-net

XLDnaute Barbatruc
Re : maquer colonne avec filtre

RE:

Peut-être comme ceci:

Code:
Sub Masquer()
Dim i As Integer, Cel As Range, Col As Range, Vide As Boolean
    Application.ScreenUpdating = False
    Cells.Columns.Hidden = False
    For i = 6 To 114
        Vide = True
        Set Col = Feuil6.Cells(7, i).Resize(120, 1)
        For Each Cel In Col.SpecialCells(xlCellTypeVisible)
          If Not Cel = "" Then Vide = False: Exit For
        Next
        Columns(i).Hidden = Vide
    Next i
    Application.ScreenUpdating = True
End Sub
A +

Cordialement.
 

VALNOE

XLDnaute Nouveau
Re : maquer colonne avec filtre

Parfait j'ai l'impression qu cela fonctionne, je vais faire des essais.

Une dernière question.

Je reporte mes données par le biais d'un collage avec liaison, là quand je lance la macro elle fonctionne mais de nouveau elle garde les lignes qui sont masquées, une autre astuce à me proposer ?

Merci d'avance,

Valérie
 

Discussions similaires

Réponses
2
Affichages
507

Statistiques des forums

Discussions
312 379
Messages
2 087 762
Membres
103 661
dernier inscrit
fcleves