Zone d'impression ; peut-on ne pas imprimer les lignes qui sont vides

Résolu/Fermé
LinDouch42 - 11 nov. 2020 à 17:37
 LinDouch42 - 15 nov. 2020 à 22:23
Bonjour,

J'ai créée une facture avec un grand nombre de ligne (car d'un mois à un autre je ne facture pas la même chose)
Je souhaiterais pouvoir imprimer mon document pour lequel j'ai défini une zone d'impression mais sans les lignes qui sont vides, de façon à avoir une fois l'impression faite, mon en-tête et mon bas de page ainsi que toutes les lignes remplies entre les deux (et évitant d'imprimer les lignes vide et gaspiller du papier pour rien, mais aussi pour avoir une belle facture au passage).

Merci pour votre aide

Cdt
Linda



Configuration: Windows / Chrome 86.0.4240.193
A voir également:

18 réponses

The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
11 nov. 2020 à 19:28
Bonsoir,

Mettre éventuellement un exemple de votre fichier anonymisé à la dispo des contributeurs

Slts
1
Je n'arrive pas à joindre de document a la conversation.

Une idée?
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
11 nov. 2020 à 20:13
Bonjour

Le plus simple : avant l'impression tu caches les lignes vides (format/ligne/masquer)

Cdlmnt
1
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
12 nov. 2020 à 02:26
Bonsoir Linda.

La solution de ccm81 au post #3 est de loin la meilleure !
Masquer les lignes vides, ça ne demande jamais que 2 clics !
Pourquoi une macro pour si peu ? C'est choisir un marteau-pilon pour écraser une fourmi ...
1
Bonjour,

Merci pour vos conseils que je vais suivre.

Cdt
0
Merci pour votre retour.

Effectivement c'est une solution.
Mais j'aimerais savoir si on peut le faire de façon automatique.
Peut-être avec une macro?

Cdt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
11 nov. 2020 à 20:18
Bonsoir voir ici

https://www.cjoint.com/

ou

https://mon-partage.fr/

puis copier le lien et le coller à la conversation sur CCM

Slts
0
Merci

https://www.cjoint.com/c/JKltuzhIqij

Sachant qu'à terme, ce classeur sera enregistré sous le format avec macro

Cdt
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
11 nov. 2020 à 21:12
Si tu tiens vraiment à une solution macro
https://www.cjoint.com/c/JKlulgT4mSB

Cdlmnt
0
Merci beaucoup. Très intéressant

Si j'ai bien compris, dans ce cas là, c'est une macro qui me permet de masquer les lignes vides automatiquement, et non une macro qui ordonne d'imprimer le document sans les lignes vides?

Est ce qu'il existe une qqchse qui pourrait répondre à ce dernier, car dans l'idéal c'est de pouvoir imprimer, voir même enregistrer le document (une macro d'enregistrement auto en pdf dans un fichier défini existe sur mon doc) sans masquer les lignes à l'écran.

Merci encore
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
11 nov. 2020 à 21:35
une macro qui ordonne d'imprimer le document sans les lignes vides?
If li1 <> li2 Then Rows(li1 & ":" & li2).Hidden = True
' imprime la zone d'impression
ActiveSheet.PrintOut
' demasque les lignes
Call afficher_tout
End Sub

Cdlmnt
0
Oopsss, j'ai peur que cette macro ne fonctionne pas car j'ai oublié un détail.

Les lignes dont je parle, ce sont les lignes vide de ma facture. Elles sont vides de la colonne C à J, mais à partir de L toutes mes colonnes sont masquées mais les lignes ne sont pas vides (parfois des infos, des formules etc...). J'ai défini une zone d'impression de ma facture uniquement.

Ce qu'il faut que je réussisse à faire c'est de masquer les lignes à conditions que les lignes des colonnes de C à J soit vides, (et uniquement pour le corps de ma facture, i.e désignation, montant, qté etc...)

J'aurais aimer également que lorsque j'enregistre le fichier en pdf, qu'il soit enregistrer de la même manière, à savoir sans les lignes vides (vides de C à J mais à partir de L, elle peuvent contenir des infos).

Encore merci

Cdt
0
Merci beaucoup.

Est-ce que je dois le copier dans un nouveau module ou est-ce que je dois le mettre dans la la feuille correspondant à mon document?

Merci
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
12 nov. 2020 à 15:24
Bonjour,

Un essai à tester

https://www.cjoint.com/c/JKmowhBLqLj

Slts
0
Merci

Entre temps, j'avais créée deux modules. Et je constate en faite que l'idéal serait un mixte des deux (votre fichier et le mien)

Les modules que j'ai créer :

Module 1 : Enregistrement avec un bouton de contrôle de la facture en pdf directement dans un dossier (l'impression pouvant se faire à partir de cet enregistrement):

Sub EnregistrementFacture()
'je déclare mes valeurs

Dim NomDossier As String
Dim Chemin As String
'Je nomme le dossier et donne le chemin de sauvegarde

NomDossier = Application.InputBox("ArchivageFactures:", "Année ?")
Chemin = "C:\Users\linda\OneDrive\Documents\COLIS LOIRE EXPRESS\Gestion Clients\Factures\ArchivageFactures\" & NomDossier & "\"

If NomDossier = "" Then Exit Sub

ActiveSheet.ExportAsFixedFormat Type:=xlTypexlsx, Filename:= _
Chemin & "FactureNumero_" & Range("H2").Value & ".pdf", quality:= _
xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _
openafterpublish:=False


End Sub

Module 2 : Masuer les lignes avec un bouton de contrôle
Sub masquer_ligne_Vide()
Dim cel As Range
For Each cel In Range("C25:C195")
If cel = "" Then
cel.EntireRow.Hidden = True
End If
Next
End Sub


Idéalement, il faudrait que je mette un autre bouton de control pour afficher les lignes masquées afin de pouvoir les utiliser si besoin.
Que me conseillez-vous? Un nouveau module ? Ou est-il possible de créer un bouton double emploi (Afficher/Masquer)?

Pouvez-vous également m'indiquer comment avez-vous fait pour personnaliser votre bouton de contrôle 'Imprimer' , c'est plus sympa avec ce visuel.

Merci
Cdt
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
12 nov. 2020 à 21:15
Bonsoir,

Désolé, je ne peux pas vous conseiller, je suis autodidacte, je fais beaucoup de bricole et donc je préfère laisser cette étape à quelqu'un de compétent en la matière et en ce qui concerne le bouton c'est une association de forme sur excel..... type rectangle à coin arrondi + ellipse + image + modifier avec remplissage dégradé etc, etc + grouper

Voilà

Slts
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
14 nov. 2020 à 14:27
Pour répondre à la question

Ou est-il possible de créer un bouton double emploi (Afficher/Masquer)?

OUI

voir ceci pour les shapes( ce bouton est une Shape):

http://boisgontierj.free.fr/fichiers/Images/lesimages.htm

voici le code à adapter:

Option Explicit
'http://boisgontierj.free.fr/fichiers/Images/lesimages.htm
Sub Rectangleàcoinsarrondis1_Clic()
If ActiveSheet.Shapes("Rectangle à coins arrondis 1").TextFrame.Characters.Text = "AFFICHER" Then
MsgBox "Afficher"
ActiveSheet.Shapes("Rectangle à coins arrondis 1").TextFrame.Characters.Text = "CACHER"
Else
ActiveSheet.Shapes("Rectangle à coins arrondis 1").TextFrame.Characters.Text = "AFFICHER"
MsgBox "Cacher"
End If
End Sub


Voilà ma modeste contribution

@+ Le Pivert
0
LinDouch42 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
14 nov. 2020 à 15:40
Merci beaucoup
0
Merci en tout cas pour votre aide.

Cdt
0
Bonjour,

Je vais donc abandonner l'idée d'avoir un bouton double control (Afficher et maquer les lignes vides, sauf si qq a la solution) et je vais conserver mes VBA, pour l'enregistrement de la facture en pdf dans un chemin d'accès précis, et la vba pour masquer les lignes vide. Module 2 : Masquer les lignes avec un bouton de contrôle

Sub masquer_ligne_Vide()
Dim cel As Range
For Each cel In Range("C25:C195")
If cel = "" Then
cel.EntireRow.Hidden = True
End If
Next
End Sub

J'aimerais donc insérer un nouveau module pour afficher les lignes masquées . Pouvez-vous m'aider pour la formulation de cette macro.
Merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
13 nov. 2020 à 19:52
Re-bonjour

Un truc comme ça ?
https://mon-partage.fr/f/90BoSQaj/

Cdlmnt
0
Merci CC381, c'est presque ça.

J'ai copié votre vba et je l'ai coller dans un module de la vba de mon fichier (d'ailleurs quelle différence de la coller directement sur la feuille ou la coller dans un module inséré?). J'ai changeé
Const lideb = 70 ' ligne de départ de la recherche de lignes vides
Const lifin = 195 ' dernière ligne --------------------------------
Const covid = "C" ' colonne
Colonne C car point de départ pour rechercher si la C70 si vide
puis executer et rien ne se passe

Si j'ai bien compris, ces macros ne fonctionnent que si toute la ligne de la feuille est vide, alors que dans mon fichier, les premières colonnes sont effectivement vides, mais à partir de la colonne k par exemple, il y a des valeurs valeurs masquées. Donc quand j'exécute ta macro, cela ne masque pas les lignes (normal car elle ne sont pas vide).
Je pense que je me suis mal exprimée, je veux masquer les lignes si les cellules des colonne C à H sont vides, la plus importante étant la première car ci elle est vide automatiquement les suivantes jusqu'à H le sont.

La macro que j'ai mis fonctionne bien mais que pour masquer et pas pour effacer, vous l'aurez compris.

Autre complication, c'est quand je clique sur exécuter, une fenêtre macro s'affiche avec les trois macro de ce fichier "afficher tout", "cacher les ligne" et "enregistrement facture". Que dois je faire?
Et pour le bouton commande, étant donné qu'il a double fonction . Est ce un bouton lambda, comment affecter deux macros sur un bouton.

Merci beaucoup en tout cas pour votre aide. Je suis pas très douée dès que ca touche aux macros

Cdt
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
14 nov. 2020 à 11:42
1. Si j'ai bien compris, ces macros ne fonctionnent que si toute la ligne de la feuille est vide
Non, la macro cacher cache les lignes lorsque la valeur en colonne covid est "" (c'est ce que j'ai compris)
2. Et pour le bouton commande, étant donné qu'il a double fonction . Est ce un bouton lambda, comment affecter deux macros sur un bouton.
Les boutons Afficher-Masquer et Imprimer sont des Contrôles ActiveX (à prendre dans la boite à outils controles et non formulaire)
3. (d'ailleurs quelle différence de la coller directement sur la feuille ou la coller dans un module inséré?
Dans la mesure où tout doit fonctionner dans la feuille Facture, le code peut être placé dans le module de cette feuille.
On crée des modules généraux (Module 1, ...) lorsque plusieurs feuilles sont concernées par les macros, ou bien quand il y a beaucoup de code, dans ce cas, ça permet de faire du rangement
4. comment affecter deux macros sur un bouton.
Il suffit de les appeler

https://mon-partage.fr/f/M5GIkuSn/

Cdlmnt
0
Merci beaucoup CCM81 pour ces éclaircissement.

Peux-t-on rajouter dans la private sub imprimer, la zone d'impression que j'ai défini.
En effet, quand je veux imprimer à partir de fichier, mon aperçu prend bien en compte la zone défini. Mais si je le fais à partir du bouton de controle, c'est toute la page qui est visible.

Cdt
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié le 14 nov. 2020 à 15:58
With ActiveSheet
.PageSetup.PrintArea = "$B$5:$I$207"
.PrintPreview


mais chez moi (excel 2003) , ça s'obstine à afficher le haut de page dans l'aperçu avant impression

Cdlmnt
0
Super ça fonctionne de mon coté.

Merci énormément pour ton aide.

Est ce que je peux abuser de ta gentillesse mais surtout de tes connaissance pour te demander comment faire pour avoir une image sympa en lieu et place du bouton de contrôle activex? Par exemple une imprimante pour le bouton Imprimer.

Cdt
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
14 nov. 2020 à 18:55
1. Tu te trouves un dessin
2. tu le colles dans ta feuille
3. Dans le module de la feuille Facture
3.1. Tu crées une procedure Public Sub Imprimer ()
3.2. Tu y colles le code du CommandButton2
3. clic-droit sur le dessin/Affecter une macro/ Et tu lui affectes Imprimer

https://mon-partage.fr/f/tHd0AWZz/

Cdlmnt
0
GENIAL, j'ai réussi a faire les modifications.

En revanche pour le bouton Afficher/Masquer, je n'y arrive pas et pour cause pas sur que l'on puisse affecter deux image à une macro ?

Dans le fichier joint les images que je souhaite utilise , le vert pour la commande afficher et le rouge pour Masquer. Peut-on les utiliser à la place du bouton control activex lambda. Est-ce que tu penses que c'est possible?

https://www.cjoint.com/c/JKot3lmJcMj
Merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
15 nov. 2020 à 19:05

Peut-on les utiliser à la place du bouton control activex lambda. Est-ce que tu penses que c'est possible?

oui
https://mon-partage.fr/f/8hoj68sX/

RQ1. Le dessin masquer a été nommé "masquer", et l'autre bien sûr "afficher"
RQ2. tu peux les superposer histoire de faire croire qu'il n'y a qu'un seul bouton

Cdlmnt
0
PARFAIT. Merci infiniment pour ton aide
0