Macro - masquer ligne et colonne

Bonjour à tous

Je ne maitrise pas encore les macros, c'est donc pour cette raison que je vous sollicite.

Je dispose d'un tableau avec beaucoup de données, seulement je souhaite voir uniquement les lignes qui comportent des données chiffrées (donc sans les lignes vides et les lignes avec le montant de 0 € dans la colonne E Solde TTC).

De plus je souhaiterait savoir comment faire pour faire disparaître les colonnes vides entre G et P .

Merci pour votre aide

Excel 2010 Windows

Bonjour et bienvenu(e)

A vérifier

Bonsoir,

A tester.

@Banzai

Salut à toi.

bonsoir a vous deux.

Dans un premier temps je tenais à vous remercier pour ces fichiers excel.

Les deux fichiers sont bien réalisés cependant ma préférence va au Fichier de "MFERRAND" car il est plus stable. En effet ce dernier pour des raison qui m’échappe est plus stable avec les lien OLE.

En revanche je vous sollicite une dernière fois pour ajuster le fichier "Nadj_Masquer LIGNE ET COLONNE". J'ai essayé de fusionner le code masquer ligne avec masque Colonne d'une part et Afficher ligne et afficher colonne d'autre part, mais cela ne marche pas. Comment faire ?

Concernant la macro masquer ligne, elle fonctionne très bien sauf pour les 3 dernières lignes (Ligne 464 465 466) comment faire pour y remédier ?

Enfin si je voulais savoir quel code modifier pour prendre en compte seulement 3 colonnes à masquer et non plus 10 afin d'adapter le code à d'autres tableaux

Merci pour votre aide

Concernant la macro masquer ligne, elle fonctionne très bien sauf pour les 3 dernières lignes (Ligne 464 465 466) comment faire pour y remédier ?

J'ai noté cela en vérifiant que la macro fonctionnait exactement. En testant avec =ESTVIDE(xxx) ces cellules renvoient FAUX, et donc si elles ne sont pas vides et ne contiennent pas 0, elles restent ! Je ne me souviens plus si j'ai trouvé pourquoi, je regarderai quand j'aurai un moment. La suite... je relirai aussi plus tard.

A+

Ferrand

J'ai retesté les lignes 563 à 566, elles ont fait apparaître chez moi un non masquage des lignes 564 et 566, la 565 se masque (j'avais peut-être finalement réussi à l'effacer la dernière fois). Ces 2 lignes apparaissaient donc non vides et différentes de 0. Curieusement aujourd'hui l'effacement a fonctionné, elles sont donc vides, et donc... c'est maintenant les lignes 551 à 566 qui ne se masquent plus : normal car le dimensionnement fait terminer le tableau à la ligne 550, ensuite c'est du vide.

Ce qui m'étonnait c'est que les lignes étaient colorées. Mais j'ai vu que tu les avais coloré en dur. Habituellement on fait ça avec une MFC. Avec 2 formules conditionnelles : =ET(A1<>"";MOD(LIGNE();2)=1) pour une couleur et =ET(A1<>"";MOD(LIGNE();2)=0) pour l'autre.

Pour fusionner les macros, les mettre à la suite et ajuster les variables : je te les remets fusionnées.

Sub Masquer()
    Dim lam(), n%, i%
    'lignes
    n = Application.CountIf(ActiveSheet.Columns(5), "=0.00")
    ReDim lam(1, n)
    Application.ScreenUpdating = False
    With ActiveSheet
        n = .Range("A" & .Rows.Count).End(xlUp).Row
        For i = 10 To n
            If .Cells(i, 5).Value = 0# Then
                lam(0, 0) = lam(0, 0) + 1
                lam(0, lam(0, 0)) = i
                Do While i <= n
                    i = i + 1
                    If .Cells(i, 5).Value <> 0# Then
                        lam(1, lam(0, 0)) = i - 1
                        Exit Do
                    End If
                Loop
            End If
        Next i
        If lam(1, lam(0, 0)) = 0 Then lam(1, lam(0, 0)) = n
        For i = 1 To lam(0, 0)
            Worksheets(2).Cells(i, 1).Value = lam(0, i)
            Worksheets(2).Cells(i, 2).Value = lam(1, i)
        Next i
        For i = 1 To lam(0, 0)
            .Rows(lam(0, i) & ":" & lam(1, i)).Hidden = True
        Next i
    'colonnes
        n = .Range("A2").MergeArea.Columns.Count
        For i = 7 To n
            If .Cells(7, i).Value = "" Then .Columns(i).Hidden = True
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

Sub Démasquer()
    Dim n%, k%
    Application.ScreenUpdating = False
    With ActiveSheet
    'lignes
        n = .Range("A" & .Rows.Count).End(xlUp).Row + 20
        .Rows(10 & ":" & n).Hidden = False
    'colonnes
        n = .Range("A2").MergeArea.Columns.Count
        For k = 7 To n
            .Columns(k).Hidden = False
        Next k
    End With
    Application.ScreenUpdating = True
End Sub

Pour les colonnes il peut y avoir un problème de démasquage. Pour les lignes, le dimensionnement se fait sur la colonne A. Il pouvait y avoir un problème au démasquage pour les derniers étant à 0 qui ne se seraient plus démasqués. J'ai donc ajouté une marge de 20 lignes pour pallier cette éventualité. Pour les colonnes, je me suis dimensionné sur tes cellules fusionnées qui cadrent les colonnes utiles, ce qui me donnait un comptage stable.

Si la configuration est la même sur les autres tableaux que tu veux traiter, elle est utilisable. Note qu'on part de la colonne 7 et de la ligne 10 pour les masquages et que pour les colonnes de la plage fusionnées j'ai pris la première cellule A2 : ces références sont en dur et à modifier pour une autre configuration. De même le masquage colonnes se fait sur le contenu de la ligne 7 et celui des lignes la colonne E (références modifiables pour une autre config.) Pour les colonnes vides que tu ne souhaites pas masquer, tu tapes une espace sur la ligne contrôlée, elle ne sera pas masquée.

Cordialement

Ferrand

Rechercher des sujets similaires à "macro masquer ligne colonne"