Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Définition d'une zone d'impression en fonction d'un critère

Renaud22

XLDnaute Junior
Bonjour à tous,

J'aurais besoin qu'on aide a concevoir un code VBA afin de définir une zone d'impression en fonction de la présence ou non d'une valeur dans une cellule.

Concrètement, pour une feuille active quelconque, la zone d'impression devra être définie entre les cellules "A1" & "X51" s'il n'y a pas de valeur dans la cellule "C55". Cependant, si une valeur est présence dans la cellule "C55", la zone d'impression devra être définie entre "A1" & "X64" .

Par exemple : =SI('Feuille_active_quelconque'!$C$55="";'Feuille_active_quelconque'!$A$1:$X$51;'Feuille_active'!$A$1:$X$64)

En vous remerciant par avance pour votre précieuse aide.

Salutations,

Renaud22
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Renaud,
Peut être quelques chose comme ça :
VB:
If [C55] = "" Then
    ActiveSheet.PageSetup.PrintArea = "$A$1:$X$51"
Else
    ActiveSheet.PageSetup.PrintArea = "$A$1:$X$64"
End If
ou plus court :
VB:
ActiveSheet.PageSetup.PrintArea = "$A$1:$X$51"
If [C55] <> "" Then ActiveSheet.PageSetup.PrintArea = "$A$1:$X$64"
 

Renaud22

XLDnaute Junior
Merci sylvanu pour votre réponse.

Je ne suis pas un expert, loin de là, en programmation VBA. Pourriez-vous m'indiquer où je dois insérer les lignes de code afin que lorsque j'active "Aperçu avant impression" je vois la page tenant compte des critères définis ($A$1:$X$51, si C55 est vide ou $A$1:$X$64, si C55 contient une valeur). Si vous pourriez me transmettre un exemple de fichier, cela serait très apprécié.

Salutations,

Renaud22
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
cela serait très apprécié.
Ce qui serait très apprécié c'est que vous fournissiez un fichier test.
C'est d'ailleurs précisé dans notre charte (Lien):
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Le fait de faire "Aperçu avant impression" ne déclenche aucune macro.
Une solution est d'avoir un bouton pour lancer cette macro.
En PJ un essai, j'ai mis la zone d'impression sur une seule feuille de façon à bien voir l'effet obtenu. Avec :
VB:
Sub ApercuAvantImpression()
    ActiveSheet.PageSetup.PrintArea = "$A$1:$X$51"
    If [C55] <> "" Then ActiveSheet.PageSetup.PrintArea = "$A$1:$X$64"
    ActiveWindow.SelectedSheets.PrintPreview
End Sub
 

Pièces jointes

  • Exemple.xlsm
    32.1 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
re
Bonjour
le mieux c'est simple si tu veux que cela soit automatique
si ta cellule c55 est modifié par formule utilise l'event calculate
si ta celluleC55 est modifiée par vba ou manuellement dans l'event change

ben dans ces deux event tu met

VB:
 ActiveSheet.PageSetup.PrintArea = "$A$1:$X$51"
    If [C55] <> "" Then ActiveSheet.PageSetup.PrintArea = "$A$1:$X$64"
terminé quand tu fera ton printpreview l'area sera le bon

simple comme "Bonjour"
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si on utilise un event, il faut plutôt utiliser la première macro, on n'effectue qu'un seul PageSetup.
Mais ça veut dire que vous perdez 100ms sur chaque calcul. Ce qui peut être rédhibitoire.
NB: Il va me falloir penser à changer de bécane.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…