XL 2019 Zone impression multiple

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Thomas-29

XLDnaute Nouveau
Bonjour à tous,

Je cherche une formule en VBA qui sélectionne une zone d'impression en fonction d'une valeur vrai ou fausse.

Feuille 1:
A1 = "oui" ou "non"
B1 = "oui" ou "non"
C1 = "oui" ou "non"

Feuille 2:
Si A1="oui" alors zone d'impression =A1:B2
si B1 ="oui" alors zone d'impression =A3:B4
si C1 ="oui" alors zone d'impression =A5:B7

Mais si A1="oui";B1="oui";C1="non" alors zone d'impressions = A1:B4
Mais si A1="oui";B1="non";C1="oui" alors zone d'impressions = A1:B2 et A5:B7
Mais si A1="non";B1="oui";C1="oui" alors zone d'impressions = A3:B7
ect....

J'ai trouvé comment choisir une zone mais pas additionner les zones 🙂

A savoir aussi, j'aurais une 100ène de zone d'impression différente

Merci d'avance.

Thomas
 
Bonjour,
La sélection multiple non contigüe n'est pas possible avec PageSetup.PrintArea .

Essayez ce code qui n'est pas parfait notamment pour les objets graphiques éventuels :
VB:
Sub PrintArea()
Dim CM As Variant, C As Variant
Dim RM As Variant, R As Variant
Dim I As Long
    With Worksheets("Feuil1")
       ' Sauvegarde des lignes et colonnes masquées
        With .UsedRange
            For I = .Column To .Column + .Columns.Count - 1
                If .Columns(I).Hidden = True Then CM = CM & I & " "
            Next
            For I = .Row To .Row + .Rows.Count - 1
                If .Rows(I).Hidden = True Then RM = RM & I & " "
            Next
        End With
        
        ' Affichage des areas désirés avant impression
        .Columns.Hidden = True
        .Rows.Hidden = True
        For Each Adr In Array("A1:B2", "A5:B7")
            With .Range(Adr)
                .Columns.Hidden = False
                .Rows.Hidden = False
            End With
        Next
        .PrintPreview
        
        ' Rétablissement de la feuille à son état d'origine
        .Columns.Hidden = False
        .Rows.Hidden = False
        For Each C In Split(Trim(CM)): .Columns(Val(C)).Hidden = True: Next
        For Each R In Split(Trim(RM)): .Rows(Val(R)).Hidden = True: Next
        
        Application.Goto .Cells(1, 1), True
    End With
    
End Sub
 
Dernière édition:
Re bonjour,
pour la partie choix des zones d'impressions,
Code:
With Worksheets("Feuil2")
    Select Case -(.[A1] = "oui") & -(.[B1] = "oui") & -(.[C1] = "oui")
        Case "000":
        Case "100": MsgBox "A1:B2"
        Case "010": MsgBox "A3:B4"
        Case "001": MsgBox "A5:B7"
        Case "110": MsgBox "A1:B4"
        Case "101": MsgBox "A1:B2 et A5:B7"
        Case "011": MsgBox "A3:B7"
    End Select
End With

/CODE]
 
Bonjour Fanch,

Merci pour ton retour.

Cela me parai complexe a faire avec une centaines de choix en entrée.

Je déposerai le fichier lundi pour mon exemple. Il y a peux être plus simple car chaque tableau fais la taille d'une page. La mise en page de chaque tableau ne change jamais.

je me rend compte que je ne suis que au début de mon apprentissage VBA 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
149
Réponses
6
Affichages
800
Réponses
5
Affichages
286
Réponses
7
Affichages
359
Retour