[VBA] Macro pour zone d'impression Excel

Résolu/Fermé
Messages postés
40
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
2 octobre 2011
-
Messages postés
40
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
2 octobre 2011
-
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

Messages postés
40
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
2 octobre 2011
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