[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 SubProblè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 SubA+
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 SubRe,
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 SubA+
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 SubJuste 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