[VBA] Zone d'impression Excel

Résolu/Fermé
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 - Modifié par Isomer le 12/04/2011 à 17:22
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 - 21 avril 2011 à 18:03
Bonjour,

Je sais qu'il existe de nombreux postes à ce propos mais je n'arrive pas à trouver mon bonheur dans l'existant. Surtout que je ne m'y connait guère en macro.

Voici ma question :

J'ai un devis de réaliser sur Excel pouvant aller de 1 à 200 lignes. Chaque pages contient 40 lignes, soit un devis pouvant aller de 1 à 5 pages.
J'aimerais que la zone d'impression se sélectionne à partir d'une formule qui me dit si une valeur est égal à zéro ou pas. Puis lorsque l'on appuis sur le bouton la sélection s'imprime et s'enregistre.

Exemple :
Devis 1 de 40 lignes : Si "40 lignes" alors on imprime une page
Devis 2 de 41 lignes : Si "41 lignes" alors on imprime deux pages

Merci d'avance
Isomer

PS : Je sais pas faire un bouton sur excel... xD


A voir également:

22 réponses

Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
21 avril 2011 à 17:03
lol , pas grave ^^

Bon j'explique : ma zone d'impression fait 2 pages.

Lorsque je lance l'impression de cette zone au lieu de m'imprimer un pdf de 2 pages (avec page 1 et page2), et bien il m'imprime deux pdf de 1 page chacun (page 1 sur un pdf et page 2 sur un autre pdf)

Suis-je plus clair ? :)
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
21 avril 2011 à 18:03
C'est bon j'ai trouvé ma solution :

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


Merci à toi lermite et à Pijaku pour votre aide très précieuse.

Bonne continuation, encore merci
A+
Iso
0