[Impression] Cacher les deux 1er lignes et la 1ere colonne

Bonjour à tous,

Je ne comprends pas trop comment c'est possible.

J'utilise ce code pour pouvoir masquer les 2 premières lignes + ma première colonne avant mon aperçu d'impression et les afficher à nouveau une fois l'édition réalisé:

Sub Btn_Aperçu_Impression_CR()

ScreenUpdating = True

    Columns("A:A").Select
    Selection.EntireColumn.Hidden = True
    Rows("1:2").Select
    Selection.EntireRow.Hidden = True
    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
    Columns("A:A").Select
    Selection.EntireColumn.Hidden = False
    Rows("1:2").Select
    Selection.EntireRow.Hidden = False
End Sub

Problème: Lorsque je clique sur le bouton auquel j'ai affecté ma macro, sur la prévisualisation rien n'est masqué...

Lorsque j'exécute un pas à pas détaillé cela fonctionne très bien pourtant...

Quelqu'un a t il déjà eu ce genre de soucis à résoudre?

Je précise que j'aimerai garder cette technique d'impression car elle permet à la fois d'imprimer (avec pas mal d'options) ou de basculer en PDF. Je m'étais embêté à générer des fichiers PDF automatiquement mais mes utilisateurs n'aime pas ça. Et comme l'utilisateur a raison... =)

Merci pour votre aide.

Bonjour Matths,

Dans votre code vous n'indiquez pas l'objet conteneur sur lequel travailler

Sub Btn_Aperçu_Impression_CR()
  Application.ScreenUpdating = False
  ' Avec la feuille nommée
  With Sheets("FeuilleAImprimer")
    .Range("A1").EntireColumn.Hidden = True
    .Range("A1:A2").EntireRow.Hidden = True
    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
    .Range("A1").EntireColumn.Hidden = False
    .Range("A1:A2").EntireRow.Hidden = False
  End With
  Application.ScreenUpdating = True
End Sub

A+

Bonjour Bruno,

Yes bien vu.

Mais cela ne fonctionne toujours pas de mon côté =/

Bonjour Matths, BrunoM45,

Avec ci-dessous en temporisant. A régler à convenance, minimum 10 secondes à +.

Sub Btn_Aperçu_Impression_CR()
ScreenUpdating = True
Attente = Now + TimeValue("00:00:10")
    Columns("A:A").EntireColumn.Hidden = True
    Rows("1:2").EntireRow.Hidden = True
    'Temporisation en secondes selon la variable Attente (ici sur un minimum de 10 secondes)
    Application.OnTime Attente, "Tempo"
    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
End Sub

Sub Tempo()
Columns("A:A").EntireColumn.Hidden = False
Rows("1:2").EntireRow.Hidden = False
End Sub

Re,

Matths, il est bien dommage de ne pas connaitre le menu mise en page et définir la zone d'impression
quand on pratique Excel

Sub Btn_Aperçu_Impression_CR()
  Application.ScreenUpdating = False
  ' Avec la feuille nommée
  With Sheets("CR_new")
    .PageSetup.PrintArea = "$B$3:$K$133"
    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
  End With
  Application.ScreenUpdating = True
End Sub

A+

Bonjour X Cellus

merci pour cette piste ! Ca devrait le faire =)

@BrunoM45

Je ne peux pas utiliser la zone d'impression car celle ci est susceptible de varier avec beaucoup de ligne =/

Par contre si vous avez une solution pour concilier ajout de ligne par l'utilisateur et zone d'impression, je suis preneur ! =)

A nouveau,

Attention, il faut augmenter le temps d'attente si l'on a plusieurs manipulations à faire avec l'imprimante.

Ici, pour cette exemple, avec 15 ou 20 secondes, puis clic sur impression, c'est suffisant.

Yes, je m'en suis aperçu quand j'ai testé, j'ai vu ce que ça faisait au bout des 10 sec.

Je suis passé à 1 minute du coup.

Merci =)

@X Cellus

Désolé je déterre un peu le sujet...

Finalement, après plusieurs semaines d'utilisation le principe de tempo perturbe un peu l'utilisateur.

Peut-on faire autrement pour que les lignes restent masquées durant la prévisualisation avec la méthode ?

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

J'ai essayé avec une msgbox: Je masque en début de procédure les 2 premières lignes. Je pose la question "L'édition s'est-elle bien déroulée?" La réponse OUI rend les lignes masquées à nouveaux visibles. Mais ça ne va pas trop non plus, la msgbox s'affiche dans l'apercu à l'impression.

Sub Btn_Aperçu_Impression_Checkpoint()

    ScreenUpdating = False

With ActiveSheet

        Rows("1:2").EntireRow.Hidden = True
        If Range("J13") = "" Then
            Columns("I:M").EntireColumn.Hidden = True
        End If
End With

    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

If MsgBox("L'édition s'est elle bien déroulée ?", vbYesNo, "Demande de confirmation") = vbYes Then
        With ActiveSheet
            Rows("1:2").EntireRow.Hidden = False
           Columns("I:M").EntireColumn.Hidden = False
        End With
End If 

    ScreenUpdating = True

End Sub

Juste pour signaler que j'ai trouvé la solution à mon problème ici

J'ai juste adapter mon code

Sub Btn_Aperçu_Impression_Universel()
'attention la zone d'impression s'arrêtera aux premières cellules vides
Dim DerLig As Integer, DerCol As Integer
With ActiveSheet
    DerLig = .Range("B" & Rows.Count).End(xlUp).Row 'mettre la colonne contenant le MAXIMUM de ligne de la zone d'impression
    DerCol = .Cells(12, Columns.Count).End(xlToLeft).Column 'mettre la ligne contenant le MAXIMUM de colonne de la zone d'impression
    .PageSetup.PrintArea = .Range(.Cells(3, 1).Address & ":" & .Cells(DerLig, DerCol).Address).Address 'je voulais que ça démarre à B1:...
End With

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

Columns("I:M").EntireColumn.Hidden = False

End Sub
Rechercher des sujets similaires à "impression cacher deux 1er lignes 1ere colonne"