[VBA] Macro pour zone d'impression Excel

Résolu
Isomer Messages postés 44 Statut Membre -  
Isomer Messages postés 44 Statut Membre -
Bonjour,

J'aimerais sélectionné une zone d'impression allant de 2 à 6 pages.
La page de présentation (toujours sélectionné)
+1 pages si M103 <> 0
+2 pages si M156 <> 0
+3 pages si etc...

Je souhaite que l'impression ce fasse en PDF et que l'on me demande juste l'enregistrement. Tout ça doit se faire via un bouton impression.

Voila la macro que l'on ma proposé :

Sub PrintDevis()

'Déclaration des variables
Dim Lig As Integer

'Zone impression "DEVIS"
Const Colonnes = 14 'adater au nombre de colonne
Const Ligne1 = 1 'Première ligne où commencer
Sheets("DEVIS").Select 'adapter le nom de la feuille
For Lig = Ligne1 To [C65536].End(xlUp).Row Step 52
ActiveSheet.PageSetup.PrintArea = Range(Cells(Lig, 1), Cells(Lig + 51, Colonnes)).Address
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next Lig

End Sub

Le problème est que cette macro :
- m'imprime chaque page dans des pdf différent
- et qu'elle m'imprime les 6 pages tout le temps

Auriez vous une solution à mon problème ?

Merci d'avance
Isomer

1 réponse

  1. Isomer Messages postés 44 Statut Membre 4
     
    Résolu :

    Sub PrintDevis()
    
    'Déclaration des variables
        Dim LigFin As Integer
    
    'Zone impression "devis 1 2 3 4"
        Const Colonnes = 14 'adater au nombre de colonne
        Const Lig = 59 'Première ligne où commencer après page de garde
        
        Sheets("DEVIS 1 2 3 4").Select 'adapter le nom de la feuille
        
            If Cells(103, 13) <> 0 Then
                LigFin = Lig + 53
            ElseIf Cells(156, 13) <> 0 Then
                LigFin = Lig + 106
            ElseIf Cells(209, 13) <> 0 Then
                LigFin = Lig + 159
            ElseIf Cells(262, 13) <> 0 Then
                LigFin = Lig + 212
            ElseIf Cells(315, 13) <> 0 Then
                LigFin = Lig + 265
            End If
        
        ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(LigFin, Colonnes)).Address
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
          
    End Sub
    1