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
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
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
Bonjour,
Merci de votre réponse.
Le bouton marche, me demande la ligne mais il bug juste après.
Ca me met une erreur sur la ligne print area.
Comment régler cela?
Merci d'avance
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
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
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
Salut,
Merci à vous deux pour vos réponses rapide.
Ca fonctionne très bien.
Malheureusement non je ne travaille pas dans une fabrique de papier
Bonne journée à vous deux
re @fanch55 j'ai quand même des doutes sur".PageSetup.PrintArea = .Rows(R).Address"
pour peu qu'il y ai plusieurs tableaux et que ce soit seulement l'un d'entre eux qui doit etre imprimé
il va se retrouver avec des pages qu'il ne veut pas , voir même des pages vides (c'est évident )
Quel que soit le nombre de tableaux,
c'est sûr que si on demande d'imprimer toute la ligne,
Excel la découpera sur plusieurs pages selon le pagesetup .