macro impression

DJARNAUD

XLDnaute Occasionnel
Bonjour,

Je cherche une macro qui, via un bouton, permettrait de lancer une impression pour une selection (cellules A1 à J36) et qui ajusterai la feuille à une page.
J'ai tenté de passer via l'enregistreur de macro, mais celui n'enregistre plus une fois que je suis sur la page de paramétres d'impression.

D'avance merci pour votre aide
 

Iznogood1

XLDnaute Impliqué
Bonjour, un code du style :

VB:
Sub Macro1()
    With ActiveSheet.PageSetup
        .PrintArea = "$A$1:$J36"
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveWindow.SelectedSheets.PrintOut
End Sub

Adapter ActiveSheet et SelectedSheets au besoin.
 

DJARNAUD

XLDnaute Occasionnel
Bonjour à tous.
Je souhaiterai modifier la macro de manière à ce que la zone d'impression dépende d'une valeur d'une cellule.
Je m'explique
si A1=5 alors je souhaiterai que la zone d'impression soit $A$1:$J5

D'avance merci


VB:
Sub Macro1()
    With ActiveSheet.PageSetup
        .PrintArea = "$A$1:$J36"
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveWindow.SelectedSheets.PrintOut
End Sub
 

Iznogood1

XLDnaute Impliqué
Bonjour,

ci-dessous le code "brut" qu'il faudra adapter :
Modifier Feuil1 par le nom vba de la feuille concernée (éventuellement le faire précéder par "ThisWorkbook.").
Enfin il serait utile de contrôler que la valeur de A1 soit compatible (du genre if not isnumeric(range("A1")) or range("A1").value < 1 or range("A1").value > 16384 then exit sub, etc... )
VB:
Sub Macro1()
    With ActiveSheet.PageSetup
        .PrintArea = "$A$1:$J" & Feuil1.Range("A1").value
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveWindow.SelectedSheets.PrintOut
End Sub
 

DJARNAUD

XLDnaute Occasionnel
Merci beaucoup Iznogood1 pour ta réponse.
Toutefois, je me suis mal exprimé, l'impression devrait faire varier le numéro de colonne.
Par exemple A1= 3; alors je voudrais imprimer de A1 à C1 par exemple
Si A1=10 alors zone d'impression A1 à J1.

D'avance merci

Bonne journée
 

Iznogood1

XLDnaute Impliqué
le code devient
VB:
Sub Macro1()
    With ActiveSheet.PageSetup
        .PrintArea = "$A$1:$" & Split(Cells(1, range("A1").Value).Address, "$")(1) & "1"
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveWindow.SelectedSheets.PrintOut
End Sub
 

DJARNAUD

XLDnaute Occasionnel
Merci,

En fait, ça ne fonctionne pas sur mon tableau car la cellule contenant le nombre de colonne à imprimer se situe en B32 et quand je subsitueB32 à D1 dans la macro, j'ai un message d'erreur.
De plus, je souhaite que le nombre de ligne à imprimer soit fixe à 28 lignes: voici le code tel que je l'ai rentré mais qui ne fonctionne pas:
VB:
Sub Macro1()
    With ActiveSheet.PageSetup
        .PrintArea = "$A$1:$" & Split(Cells(1, Range("B32").Value).Address, "$")(1) & "28"
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveWindow.SelectedSheets.PrintOut
End Sub
 

Discussions similaires

Réponses
12
Affichages
242

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16