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.
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
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"?
Bien sur, il suffit d'appliquer les conseils de Patrick.
Qui plus est, plutôt utiliser la macro avec les IF, cela divisera par deux le temps d'exécution.
Le bouton n'est qu'une solution. Moins lourde en temps mais moins "automatique".
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
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
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