> 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
-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
11,99 €Micro clé USB 3.1 Sandisk Ultra Fit 64 Go à 11,99 €
Valable jusqu'au 26 Février

Amazon fait une promotion sur la micro clé USB Sandisk Ultra Fit d'une capacité de 64 Go qui passe à 11,99 €. La minuscule taille de cette clé USB va vous permettre de la laisser brancher en permanence sur votre portable, votre TV ou votre autoradio sans qu'elle dépasse de manière disgracieuse. Sa compatibilité USB 3.1 lui permet d'atteindre des débits jusqu'à 130 Mo/s. 


> Voir l'offre
GratuitJeu PC Assassin's Creed Syndicate gratuit
Valable jusqu'au 27 Février

Epic Game Store offre actuellement le jeu PC Assassin's Creed Syndicate. Incarnez Jacob Frye, un jeune Assassin impétueux et rebelle, et utilisez vos capacités pour aider les laissés-pour-compte dans la marche vers le progrès. Parcourez la ville à l'apogée de la Révolution Industrielle et rencontrez des personnages historiques emblématiques. De Westminster à Whitechapel, croisez Darwin, Dickens, la reine Victoria, et bien d'autres. En tant que dirigeant d'un gang, fortifiez votre repère et ralliez les membres des gangs rivaux à votre cause afin de reprendre la capitale des mains des Templiers.


> 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