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
 

patricktoulon

XLDnaute Barbatruc
ben sur windows 10 l'astuce existe aussi
déjà dans ton sytem il y a marqué
xx,xx giga de ram
ou xx,xx giga de ram disponible
ça tu peux le modifier pour jouir de tout ta ram physique dispo

les app en 32 bit utilise 1 coeur ou deux si 4 coeurs
tu pouvait régler ça aussi sur Win 7 je suppose que win 10 aussi

si ça ce trouve ton pc est réglé en dessous du minimum
un pc avec 3 giga de proc et 32 de ram t'en fait une fusée en utilisant seulement la moitié de sa capacité

si tu n'a rien configuré et installé ou mis a jour vers w 10 tu est en slowmotion
tu serais surpris si tu faisais quelque réglages
 

Renaud22

XLDnaute Junior
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
Je comprends sylvanu. Est-il possible d'automatiser le processus? Ou seule une macro permet d'atteindre l'objectif visé. Advenant, que la macro est l'unique solution, est-il possible pour vous de la modifier votre macro afin que la zone d'impression soit élargie sur deux pages, s'il y a une valeur dans la cellule "C55"?

Dans l'attente de votre réponse
 

patricktoulon

XLDnaute Barbatruc
re
on peut limiter néanmoins le refrech du page setup
dans la feuille
VB:
Dim oldcellvalue
Private Sub Worksheet_Calculate()
    If [c55] <> oldcellvalue Then FitToTwoPage
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$5" Then FitToTwoPage
End Sub

Sub FitToTwoPage()
    If oldcellvalue <> [c55].Value Then
        oldcellvalue = [c55].Value
    End If
    If [c55] <> "" Then Set plage = [A1:X64] Else Set plage = [a1:x51]
    With ActiveSheet.PageSetup
        .PrintArea = plage.Address
        'etc etc...
        '..
        '..
        '...
        '...

    End With
End Sub
 

Renaud22

XLDnaute Junior
Bonjour Patrick,
Pourriez-vous intégrer votre code dans le fichier "Test.xlsm" ci-joint afin que je puisse le tester.
Je suis pas très habile avec la programmation VBA.
Salutations,
Renaud22
 

Pièces jointes

  • Test.xlsm
    26.7 KB · Affichages: 1

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 069
Messages
2 085 037
Membres
102 762
dernier inscrit
Ucef