> Tous les forums > Forum Bureautique
 Ne pas imprimer les lignes masquées (VBA)Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Titi12
  Posté le 27/03/2016 @ 19:41 
Aller en bas de la page 
Petit astucien

Bonjour,

J'ai bricolé un devis sous Excel pour un ami auto entrepreneur, et j'ai un soucis pour imprimer. Je vais essayer d'être clair.

Le devis peut comporter 200 lignes, la première se situe dans la cellule A18 donc la dernière c'est la A218 (jusque là vous suivez) . Ce que je voudrais c'est imprimer sur 3 pages de la ligne 1 à la ligne 225 si le devis comporte 200 lignes, sinon masquer les lignes depuis la dernière cellule non vide dans la plage A18:A218 et imprimer depuis la ligne 1 jusqu'à la ligne 225 par tranche de 75 lignes.

Sub Imprime() 'impression du devis
Dim nombre As Integer
nombre = Application.InputBox(msg, TITLE, 0)
If nombre = 0 Then
Beep
MsgBox MSG0, 0, MESSAGE
End
ElseIf nombre > 9 Then
Beep
MsgBox MSGSUP0, 0, MESSAGE
End
Else
Dim Last_Row, Derlig
ActiveSheet.Unprotect
Last_Row = (Worksheets("Formulaire").Range("A18").End(xlDown).Row)
Derlig = (Worksheets("Formulaire").Range("A217").End(xlUp).Row)
MsgBox Last_Row
MsgBox Derlig
Rows(Derlig & ":216").Select
Selection.EntireRow.Hidden = True
Application.ScreenUpdating = True
Dim Chemin, Fichier, Dev
Dev = ThisWorkbook.Sheets("Formulaire").Range("E13")
Chemin = ThisWorkbook.Path & "\"
Fichier = "Devis " & Dev
Select Case Derlig
Case 1 To 75
Application.PrintCommunication = False
ActiveSheet.PageSetup.PrintArea = "$A$1:$E$225"
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Application.PrintCommunication = True
Case 76 To 150
Application.PrintCommunication = False
ActiveSheet.PageSetup.PrintArea = "$A$1:$E$225"
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 2
End With
Application.PrintCommunication = True
Case 150 To 225
Application.PrintCommunication = False
ActiveSheet.PageSetup.PrintArea = "$A$1:$E$225"
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 3
End With
Application.PrintCommunication = True
End Select
'ActiveSheet.PrintOut Copies:=nombre
ActiveSheet.PrintPreview
Rows(Derlig + 2 & ":216").Select
Selection.EntireRow.Hidden = False
ActiveSheet.Protect
ThisWorkbook.Sheets("Formulaire").Select
Application.ScreenUpdating = True
ThisWorkbook.Sheets("Formulaire").Select
End If
End Sub

J'espère que le code ci-dessous vous apportera un peu de clarté.

D'avance merci. (j'y suis depuis ce matin et j'ai mal au crâne)

@++

Publicité
ferrand
 Posté le 28/03/2016 à 00:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Compte-tenu de ta description je me contenterais de quelque chose comme ça :

Sub Imprimer()
Dim NbC, p%, i%, Fichier$
Do
NbC = Application.InputBox("Nombre de copies (1 à 9)", "Imprimer", 1, , , , , 1)
If NbC = False Then Exit Sub
NbC = CInt(NbC)
Loop While NbC < 1 Or NbC > 9
With Worksheets("Formulaire")
p = WorksheetFunction.CountA(.Range("A18:A225")) + 17
p = IIf(p Mod 75 > 0, Int(p) + 1, p)
.Range("A18:A225").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
With .PageSetup
.PrintArea = "$A$1:$E$225"
.FitToPagesWide = 1
.FitToPagesTall = p
.Zoom = False
End With
.PrintOut copies:=NbC, preview:=True
Fichier = "Devis " & .Range("E13") & ".pdf"
.ExportAsFixedFormat ThisWorkbook.Path & "\" & Fichier, xlTypePDF
.Range("A18:A225").EntireRow.Hidden = False
End With
End Sub

J'ai un peu extrapolé ta composition de nom de fichier inutilisé à un enregistrement en pdf (?). Pour les autres écarts avec ton code, tu lis... 2 points peut-être à expliciter : si mes souvenirs sont bons la méthode InputBox renvoie False lorsqu'on annule, les FitTo... de la mise en page sont sans effet si Zoom n'est pas mis à False.

Cordialement.

Titi12
 Posté le 28/03/2016 à 08:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Alors là, je dis , de plus ton extrapolation était bonne puisqu'il y a une option qui permet d'envoyer un PDF par mail. Par contre pour le reste c'est un vieux fichier que j'avais fait il y a 18 ans pour mon beau-frère et à l'époque je maitrisais moyennement VBA, mais hier je ne maitrisais plus du tout. Je n'ai pas fini, loin de là et je reviendrai certainement vers vous.

Encore merci.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
32,99 €Imprimante multifonction HP DeskJet 2620 + Instant Ink 6 mois à 32,99 €
Valable jusqu'au 21 Février

Cdiscount propose actuellement l'imprimante multifonction HP DeskJet  2620 à 32,99 €. Cette imprimante 3 en 1 fait donc imprimante, photocopieur et scanner. Elle dispose d'un chargeur automatique de documents. Elle fonctionne avec 2 cartouches d'encre (une noire et une 3 couleurs). Avec l'imprimante, vous pouvez également bénéficier de 6 mois d'abonnement gratuit au service HP Instant Ink où vos cartouches sont automatiquement commandées par votre imprimante.  Afin de bénéficier du service vous devrez sélectionner un forfait parmi les quatre forfaits existants (15, 50, 100, 300 pages) en fonction de votre prévision de consommation. HP vous enverra ainsi gratuitement assez d'encre pour imprimer jusqu'à 300 pages / mois pendant 6 mois. Vous pouvez bien sûr résilier ce forfait à la fin des 6 mois (ou bien passer au forfait gratuit qui offre 15 pages / mois). Notez que ce service n'est pas obligatoire et que si vous ne souhaitez pas y souscrire, vous pouvez acheter vous même vos cartouches.


> Voir l'offre
-30%Jusqu'à -30% sur une sélection de produits Ski et Snow sur Amazon
Valable jusqu'au 26 Février

Amazon offre actuellement jusqu'à 30% de remise immédiate sur une sélection de vêtements, accessoires, matériel et équipement de ski et de snow.


> Voir l'offre
116,39 €Disque dur externe Western Digital My Book 6 To USB 3.0 à 116,39 €
Valable jusqu'au 24 Février

Amazon propose actuellement le disque dur externe Western Digital My Book 6 To USB 3.0 à 116,39 € livré gratuitement. On le trouve ailleurs autour à partir de 150 €. Grâce à la connectique USB 3.0 (compatible USB 2.0), ce disque dur vous offrira d'excellents débits pour vos transferts et vos sauvegardes. 


> Voir l'offre

Sujets relatifs
Imprimer ses enveloppes oui, mais toutes les lignes !
Imprimer les lignes d'une feuille excell
imprimer une page web
Calculs dans un tableau illimité en nombre de lignes
fichier excell Lignes disparues
imprimer fichiers classeur open office séparément
Décaler de 240 lignes une plage dans une formule à chaque ligne
Largeur colonnes et lignes
Imprimer les choix des menus déroulants
INDESIGNCC 2014 IMPRIMER EN RECTO VERSO
Plus de sujets relatifs à Ne pas imprimer les lignes masquées (VBA)
 > Tous les forums > Forum Bureautique