Masquer des colonnes et lignes selon conditions avant impression

Bonjour la communauté,

Je cherche désespérément à trouver un code adéquat pour exécuter 2 fonctions lors de l'impression :

1) Les colonnes F:H, J:L, N:P, R:Y doivent être masquées

+

2) Si des cellules contiennent le texte "z" sur une des colonnes Plage A1:E500, pouvoir masquer la ligne complète.

3) Une fois le document imprimé, pouvoir tout réafficher de nouveau (lignes + colonnes)

J'ai mis un bouton pour pouvoir exécuter le code au clic.

Ebauche de mon code très incomplet (il me manque le point 2):

With ActiveSheet.Range("F:H,J:L,N:P,R:Y")

.EntireColumn.Hidden = True

ActiveSheet.PrintPreview

.EntireColumn.Hidden = False

Faut il utiliser .ParentCell .ParentRows et Intersect?

image

A dispo si besoin, Merci de votre aide,

Samy

Bonjour,

Avec ce code, ça devrait le faire

Sub x()

Dim c, FirstAddress

With ActiveSheet
    ' Commence par masquer les lignes avec "z"
    With .Range("A1:E500")
        Set c = .Find("z")
        If Not c Is Nothing Then
            FirstAddress = c.Address ' Sauve adress max
            Do
                Set c = .FindNext(c)
                .Rows(c.Row).Hidden = True
            Loop While Not c Is Nothing And c.Address <> FirstAddress
        End If
    End With

    ' Masque les colonnes
    With .Range("F:H,J:L,N:P,R:Y")
        .EntireColumn.Hidden = True
    End With
End With

ActiveSheet.PrintPreview ' Imprime

' Réaffiche tout
With ActiveSheet
    .Columns.Hidden = False
    .Rows.Hidden = False
End With

End Sub

A tester et à corriger si besoin

A+

Eric

Bonjour

Par filtre sur une colonne

Sub imprime()
With ActiveSheet.Range("F:H,J:L,N:P,R:Y")

.EntireColumn.Hidden = True

End With

'Field:=7    numéro de la colonne à filtre ne contenant pas 'z'
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:= _
        "<>*z*", Operator:=xlAnd

ActiveSheet.PrintPreview

With ActiveSheet.Range("F:H,J:L,N:P,R:Y")

.EntireColumn.Hidden = False
End With

'Désactiver le filtres pas 'z'
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7

End Sub

A adapter sur votre tableau

Belle journée

Patrice

Bonjour à vous et merci pour vos réponses rapides!!

Patrice, j'ai essayé d'adapter votre code à mon fichier, notamment sur les N° colonnes que je souhaite masquer (1,2,5) mais il me renvoie une erreur d'argument (l'indice n'appartient pas à la sélection). A noter mon tableau n'est pas "mis en forme", serait-ce lié?

image

Eric, après adaptation du code, vba me génère bien l'aperçu avant impression sans erreur, mais toutes les données sont masquées hors en-têtes :

image

Egalement, peut on ajouter un paramètre de mise à l'échelle "AJUSTER toutes les colonnes à 1 PAGE" ?

Auriez vous des éclaircissements.....

Merci encore et à bientot

Samy.

Re,

Pour ajuster l'aperçu, rajouter ce bout de code (il existe beaucoup d'autres paramètres disponibles)

    With .PageSetup
        .Zoom = False
        .FitToPagesWide = 1        ' Ajuste à une page en largeur
        .FitToPagesTall = False    ' Pas en hauteur
        .CenterHorizontally = True ' Centrer sur la page (hauteur) False sinon
        .CenterVertically = True   ' ""                  (horizontal)
    End With
End With

Juste après

' Masque les colonnes
    With .Range("F:H,J:L,N:P,R:Y")
        .EntireColumn.Hidden = True
    End With
>>> Ici

Pour ce qui est du masquage total, je ne vois pas. J'ai fait un essai avec un nouveau classeur, et ça fonctionne très bien.

Il faudrait joindre le classeur, ce sera plus facile pour voir où est le problème.

A+

Bonjour STISSOT

Remplace

    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:= _
        "<>*z*", Operator:=xlAnd

par

    ActiveSheet.Range("$B$2:$D$20").AutoFilter Field:=1, Criteria1:="<>*z*", _
        Operator:=xlAnd

Change les références de ton tableau à filtrer.

$B$2:$D$20

Et Field:=1 correspond à la première colonne de ton tableau sélectionner : dans cet exemple c'est la colonne B.

Bonjour!

Sujet cloturé grace à Eric, Merci à tous pour votre aide!!!

Rechercher des sujets similaires à "masquer colonnes lignes conditions impression"