XL 2013 Bouton Imprimer

thibault_jrt

XLDnaute Nouveau
Bonjour,
Je bloque pour réaliser un bouton imprimer avec des contraintes.
Mon but serait d'avoir un bouton imprimer qui demanderait la ligne imprimer puis imprimer cette même ligne.
Je suis ouvert à toutes propositions.
Merci d'avance pour votre aide.
Bonne journée
 
Solution
Salut Thibault,Patrick,

Comme c'était une demande vraiment spécifique et jetable,
( et probablement par flemme d'insérer un module )
je me suis dit que le code pouvait être mis dans celui de la feuille,
d'où l'omission de l'activesheet .

Patrick a raison, il faudrait toujours être rigoureux, même dans la rapidité.

Le code bétonné pour une utilisation dans un module :
VB:
Sub Imprimer()
Dim R As Variant
    With ThisWorkbook.ActiveSheet
        R = InputBox("Entrez le n° de ligne à imprimer", , 1)
        If R > 0 Then
            .PageSetup.PrintArea = .Rows(R).Address
            .PrintPreview ' ou .PrintOut pour imprimer directement
        End If
    End With
End Sub

fanch55

XLDnaute Barbatruc
code à assigner à un bouton sur votre feuille :
VB:
Public Sub imprimer()
    R = InputBox("Entrez le n° de ligne à imprimer", , 1)
    If R > 0 Then
        With PageSetup
            .PrintArea = Rows(R).Address
            End With
        ActiveSheet.PrintPreview
    End If
End Sub

Cependant, l'utilité m'échappe ...
 

patricktoulon

XLDnaute Barbatruc
Bonjour
a mon avis il faut déterminer avec un peu plus de précision la plage à imprimer
et le pagesetup a un parent me semble t il !!!;)

exemple ici la plage "A:J" sur la ligne demandée avec l'inputbox
VB:
Public Sub imprimer()
    r = InputBox("Entrez le n° de ligne à imprimer", , 1)
    If r > 0 Then
        With ActiveSheet.PageSetup
            ' .PrintArea = Rows(R).Address
            .PrintArea = ActiveSheet.Range("A" & r, "J" & r).Address
        End With
        ActiveSheet.PrintPreview
    End If
End Sub
cela dit imprimer une seule ligne c'est une demande particulière
peut être avez vous vos entrées dans une fabrique de rame de papier 🤣
 

fanch55

XLDnaute Barbatruc
Salut Thibault,Patrick,

Comme c'était une demande vraiment spécifique et jetable,
( et probablement par flemme d'insérer un module )
je me suis dit que le code pouvait être mis dans celui de la feuille,
d'où l'omission de l'activesheet .

Patrick a raison, il faudrait toujours être rigoureux, même dans la rapidité.

Le code bétonné pour une utilisation dans un module :
VB:
Sub Imprimer()
Dim R As Variant
    With ThisWorkbook.ActiveSheet
        R = InputBox("Entrez le n° de ligne à imprimer", , 1)
        If R > 0 Then
            .PageSetup.PrintArea = .Rows(R).Address
            .PrintPreview ' ou .PrintOut pour imprimer directement
        End If
    End With
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour @fanch55
en effet
je n'ai pas mis "thisworkbook " par ce que l'appel est sensé se faire d'un bouton dans la feuille
donc le classeur est bien reconnu implicitement
et activesheet.pagesetup parce que pagesetup tout seul ne veut rien dire

mais c'est très bien !!! mieux vaut donner les bons reflex au débutants ;)
 

Statistiques des forums

Discussions
315 093
Messages
2 116 140
Membres
112 669
dernier inscrit
Guigui2502