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.
Sub Macro1()
With ActiveSheet.PageSetup
.PrintArea = "$A$1:$J36"
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveWindow.SelectedSheets.PrintOut
End Sub
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
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
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.
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
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