Zone d'impression multiple et variable

DAVID TRESSERE

XLDnaute Nouveau
Bonjour,

J'ai deux zone d'impression B3:BA43 et CB3:EA43
Ces deux zone d'impression corresponde à une page entière dans lesquel il y a un des tableau de base contenant déjà des information de base titre de colonne et de ligne.

J'aimerai que la deuxième zone d'impression (en entier) soit imprimé uniquement si certaine cellule contiennent des information dans la plage CF31:DS43
Dans tout les cas la première zone d'impression B3:BA43 doit être imprimé

Merci d'avance pour votre aide
 

eriiic

XLDnaute Barbatruc
Bonjour,

Ces deux zone d'impression corresponde à une page entière
Déjà là ce n'est pas possible.
Pour excel, 2 plages = 2 pages.

Ce qui est faisable c'est 1 plage et masquer les lignes ou colonnes à ne pas imprimer.
J'ai l'impression que tu as beaucoup de colonnes pour que ça rentre de façon lisible dans 1 page non ?
eric
 

eriiic

XLDnaute Barbatruc
si je masque les colonnes entre les deux zones puis-je faire comme si j'avais une seule zone?
C'est que j'ai dit oui

Pour le reste, ben on verra si on a une réponse quand tu expliqueras correctement.
Parce que :
si certaine cellule contiennent des information...
si sur la deuxième page elle contient des donnée dans certaine cellule
excel ne comprendra jamais, et nous non plus d'ailleurs.
eric
 

DAVID TRESSERE

XLDnaute Nouveau
Admettons que j'ai qu'une seuls zone d'impression B3: DA43 avec 2 pages B3:BA43 et BB3: DA43
il y a des formules dans toutes les cellules et deux lignes qui sont des entêtes de colonnes qui sont toujours présente.
Mon souhait est que s'il n'y a pas de donné supplémentaire autre que les entêtes de colonne dans la deuxième page c'est à dire les cellules BB3: DA43, alors je ne veux pas qu'elle s'imprime mais si il y a des données alors je souhaite que toute la page s'imprime
 

eriiic

XLDnaute Barbatruc
Pas bonjour non plus,

j'ai qu'une seuls zone d'impression B3: DA43 ... et deux lignes qui sont des entêtes
Tes lignes d'entête sont donc 3 et 4, sinon elles ne sont pas imprimées, on est bien d'accord ?
Donc tu ne veux pas imprimer la 2nde partie si BB5 est vide.
Mais si tu y as une formule, pour excel ce n'est pas vide. Réduire la zone d'impression si BB5="" ça te va ou il y a d'autres impératifs ?
eric
 

DAVID TRESSERE

XLDnaute Nouveau
pour faire simple oui c'est ça. les cellules qui contienne des formules renvoi soit une donné soit "". donc je peut avoir sans problème BB5=""

oui ligne d'entête 3 et 4 qui sont imprimé avec le reste tu tableau pour page 1 et pour la deuxième page soit rien sinon elles sont aussi imprimé seulement si par exemple BB5<>""
 

DAVID TRESSERE

XLDnaute Nouveau
j'ai testé avec cette VBA mais la ligne ActiveSheet.PageSetup.PrintArea bug je ne comprend pas pourquoi. je l'ai essayé dans l'autre sens elle marche c'éest à dire avec colonne fixe est ligne variable. mais avec ligne fixe et colonne variable elle bug

Sub Zone_Impress()
' compte les valeurs numériques en ligne 1
nv = WorksheetFunction.Count(Range("A1:EZ1"))
' nombre de lignes avant les valeurs (blanc, titre ..)
ncol = 2 ' à adapter
' dernière ligne de la zone d'impression
dl = 41 ' à adapter
'dernière colonne de la zone d'impression
dcol = nv + ncol
'définition zone d'impression
ActiveSheet.PageSetup.PrintArea = "$B$3:$" & dl & dcol
End Sub
 

DAVID TRESSERE

XLDnaute Nouveau
cela ne fonctionne pas, cela me renvoi erreur d'exécution '1004'

Je suis en fait partie d'un post trouvé sur le net avec des colonne fixe et des ligne variable. j'ai essayé d'adapté pour moi pour ligne fixe et colonne variable comme dans mon post précédent. comme inscrit ci-dessous ça marche (colonne fixe et ligne variable), peut être que je modifie mal, mais ne comprend pas tout

Sub Zone_Impress()
' compte les valeurs numériques en colonne B
nv = WorksheetFunction.Count(Range("B:B"))
' nombre de lignes avant les valeurs (blanc, titre ..)
nl = 2 ' à adapter
' dernière colonne de la zone d'impression
dcol = "J" ' à adapter
'dernière ligne de la zone d'impression
dl = nv + nl
'définition zone d'impression
ActiveSheet.PageSetup.PrintArea = "$A$1:$" & dcol & dl
End Sub
 

eriiic

XLDnaute Barbatruc
oui, il veut une chaine et non une plage, donc :
VB:
ActiveSheet.PageSetup.PrintArea = [B3].Resize(nombre_de_lignes, nombre_de_colonnes).Address
Libre à toi si tu préfères l'autre syntaxe.
Il te reste à déterminer les valeurs de nombre_de_lignes et nombre_de_colonnes.
Comme tu ne donnes pas les détails pour nombre_de_colonnes et que je n'aime pas devoir arracher les renseignements un par un et essayer de deviner le reste, j'arrête-là et te laisse finir. Si c'est fixe et bien met le nombre à la place.
eric
 

DAVID TRESSERE

XLDnaute Nouveau
Super merci, il manquer le .address et j'ai remplacer nombre_de_lignes par dl sinon çà ne marcher pas car cela renvoyé une valeur vide alors qu'avec dl cela renvoi les ligne calculer dessus c'est a dire nv + nl. nv étant le calcul de nombre de colonne variable
Voici donc ce que j'ai mis:

ActiveSheet.PageSetup.PrintArea = [B3].Resize(dl, dcol).Address
 

Discussions similaires