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
 

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
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

patricktoulon

XLDnaute Barbatruc
re
je t'ai donné une base
il te reste plus qu'a paramétrer comme tu le souhaite
pour t'aider tu a l'enregistreur de macro qui te donne 90% du code
je regarderais demain là j'en ai un peu marre ce soir
 

Discussions similaires

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