XL 2016 Définition d'une zone d'impression en fonction de la valeur d'une cellule

duclosm

XLDnaute Nouveau
Bonjour le forum,

J'ai un soucis afin de configurer ma zone d'impression en fonction de la valeur d'une cellule… Help...

En fait, je souhaiterai que :

Si D5 = "Oui" alors la zone d'impression est C59:Q104 (à imprimer avec un en-tête se trouvant en C1:Q9);
Si D5 = "Non" alors la zone d'impression est C10:Q55 (à imprimer avec un en-tête se trouvant en C1:Q9).

En espérant avoir été assez clair, merci d'avance pour votre aide ! :)
 

job75

XLDnaute Barbatruc
Bonsoir duclosm,

Je ne vois pas de difficulté :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D5]) Is Nothing Then
    With PageSetup
        .PrintArea = ""
        If UCase([D5]) = "OUI" Then .PrintArea = "C59:Q104"
        If UCase([D5]) = "NON" Then .PrintArea = "C10:Q55"
        .PrintTitleRows = "$1:$9"
    End With
End If
End Sub
A+
 

duclosm

XLDnaute Nouveau
Bonsoir et merci de votre réponse job75,

Malheureusement, j'ai l'impression que la macro déjà appliquée sur cette feuille ne permet pas l'ajout du code que vous avez rédigé...

La macro que j'ai déjà est celle-ci:

Private Sub Worksheet_Change(ByVal sel As Range)
If sel.CountLarge > 1 Then Exit Sub
If Not Intersect(sel, [E9]) Is Nothing Then
If [E9].Value = "Manuel" Then
Rows("10:58").Hidden = True
Rows("58:149").Hidden = False
Else
Rows("10:58").Hidden = False
Rows("58:149").Hidden = True

End If
End If
End Sub

avec un simple copié / collé à la suite de ce code (comme suit) une erreur s'affiche (Compile Error : Ambiguous name detected : Worksheet_Change) Comment puis-ja faire pour insérer votre macro et que l'ensemble fonctionne ?:

Private Sub Worksheet_Change(ByVal sel As Range)
If sel.CountLarge > 1 Then Exit Sub
If Not Intersect(sel, [E9]) Is Nothing Then
If [E9].Value = "Manuel" Then
Rows("10:58").Hidden = True
Rows("58:149").Hidden = False
Else
Rows("10:58").Hidden = False
Rows("58:149").Hidden = True
End If
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D5]) Is Nothing Then
With PageSetup
.PrintArea = ""
If UCase([D5]) = "OUI" Then .PrintArea = "C59:Q104"
If UCase([D5]) = "NON" Then .PrintArea = "C10:Q55"
.PrintTitleRows = "$1:$9"
End With
End If
End Sub

Merci beaucoup
 

Discussions similaires

Statistiques des forums

Discussions
312 106
Messages
2 085 352
Membres
102 871
dernier inscrit
Maïmanko