XL 2010 Macro imprimer, masquer et compacter des lignes

Orson83

XLDnaute Impliqué
Bonsoir à tous,

Je cherche à imprimer des pages séparément et à masquer l'impression des certaines lignes inutiles.

L'idée est de compacter les différents espaces vides entre chaque tableau en laissant 1 ligne vide uniquement (ligne blanche).

En effet, je n'ai pas d'autre choix que de garder un visuel de page un peu boiteux ce qui m'oblige à bricoler pour pouvoir imprimer correctement.

Du coup, j'aimerai imprimer sur 2 pages, masquer une série de lignes inutiles et mettre en blanc des lignes visibles (grises actuellement).

Par la même occasion, j'aimerai aussi régler la mise en page selon des mages définies dans le codage.

J'ai déjà codé mais bien sûr ça ne marche pas. Le code se trouve dans VBAProject > Feuil1

Je joins mon fichier exemple dans ce post.

Merci pour votre aide.

François
 

Pièces jointes

  • V1-Zones-impression.xlsm
    32.8 KB · Affichages: 14

Orson83

XLDnaute Impliqué
Bonjour Tchotchodu31, fanch55,

Ceci est plus simple :
VB:
Sub Imprimer()
Feuil1.Copy 'Nouveau document
With ActiveSheet
    .[20:22,41:63,75:80].EntireRow.Hidden = True  'Masque une sélection de lignes
    .[C4,C19,C32,C40,C74].EntireRow.Interior.ColorIndex = xlNone 'Intérieur incolore des lignes 4,19,32,40,74
    .[C33:D33].Interior.Color = [C5].Interior.Color 'Gris
    With .PageSetup
        .PrintArea = "C3:D40,C64:D89" 'Zones de la page 1 et 2
        .LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
        .RightMargin = Application.InchesToPoints(0.8) 'Marge droite
        .TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page
        .BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page
    End With
    .PrintPreview 'Aperçu pour tester
    '.PrintOut 'Pour imprimer
    .Parent.Close False 'Ferme le document
End With
End Sub
A+

Bonsoir job75,

Parfait, effectivement le code est plus simple et il fonctionne très bien.

Merci pour ton aide et celle de fanch55.

Petite question : en imaginant que depuis la feuil1 (1 bouton) je doive imprimer la feuil2 (plage A2:F25) et la feuil3 (plage B5:G32).

Ceci est-il possible avec une Macro?

Bonne soirée.

François
 

fanch55

XLDnaute Barbatruc
Cela n'aurait aucune importance, la feuille est copiée comme elle est.
Désolé, j'ai testé : le copy par défaut se fait dans un nouveau classeur .
La feuille est portée avec tout son code, les modules ne sont pas dupliqués.
Donc, si on a des formules "personnelles", elles plantent.
S'il y a un Worksheet_Activate effectuant au préalable certaines opérations se trouvant dans le module d'origine, l'activation plante .

On peut effectivement préciser au copy de le faire dans le worksheet en cours :

Feuill1.copy after:=activesheet

mais on peut se heurter également au problème du Worksheet_Activate de cette nouvelle feuille . :rolleyes:

Mais ce n'est pas le cas ni le propos de ce fil , ta solution colle pile/poil au cas présent .
 

Orson83

XLDnaute Impliqué
Désolé, j'ai testé : le copy par défaut se fait dans un nouveau classeur .
La feuille est portée avec tout son code, les modules ne sont pas dupliqués.
Donc, si on a des formules "personnelles", elles plantent.
S'il y a un Worksheet_Activate effectuant au préalable certaines opérations se trouvant dans le module d'origine, l'activation plante .

On peut effectivement préciser au copy de le faire dans le worksheet en cours :

Feuill1.copy after:=activesheet

mais on peut se heurter également au problème du Worksheet_Activate de cette nouvelle feuille . :rolleyes:

Mais ce n'est pas le cas ni le propos de ce fil , ta solution colle pile/poil au cas présent .

D'accord, merci d'avoir regardé.

Bonne soirée à tous.
 

Discussions similaires

Statistiques des forums

Discussions
314 770
Messages
2 112 757
Membres
111 652
dernier inscrit
Joel Bakuka