Impression sans ligne vide


#1

Bonjour,
J’ai un tableau assez long, avec des formules.
Je voudrais imprimer seulement les lignes dont les formules renvoient un résultat. Autrement dit les lignes vides de données, mais pas de formules.
J’ai intégré une formule dans la définition de ma zone d’impression, mais ça ne fonctionne pas. Excel considère que mes cellules ne sont pas vides puisqu’elles contiennent des formules.

merci de votre aide


#2

Bonjour

Activer une cellule en haut d’un tableau par exemple
Menu Données / Filtrer / Filtre automatique. (Icône en forme d’entonnoir)
image
Cliquer sur la petite flèche sur une des colonnes ou se trouve des formules et des résultats vides
et décocher "vides"
image
Il suffit d’imprimer.


#3

Bonjour
Je réalise que je me suis mal expliqué :
Je veux supprimer les lignes vides automatiquement au moment de l’impression (en vba)

  • soit en les masquant le temps de l’impression (pour les afficher de nouveau après)
  • soit en modifiant la zone d’impression (toujours automatiquement)

(je n’ai pas trouvé la façon d’insérer un fichier exemple).

Merci de votre aide


#4

Bonjour @chajmi26,
Salut @Mimimathy, :wink:

@chajmi26, pour joindre un fichier exemple sur le forum, suivre cette procédure:

Joindre un fichier

Cordialement.


#5

Re,

Salut MDO

Une p’tite macro à mettre dans un module par ALT F11

Dans la macro, il y a une ligne 'ActiveSheet.PrintOut qui, si on ôte l’apostrophe permet d’imprimer sans prévisualition, à condition de mettre l’apostrophe sur la ligne ActiveSheet.PrintPreview

Sub ImprimeSansLigneVide()
Dim Lig%
    For Lig = ActiveSheet.UsedRange.Rows.Count To 1 Step -1 'Boucle sur la feuille active depuis le bas
        If Application.CountBlank(Rows(Lig)) = Application.Columns.Count Then 'Si il trouve une ligne vide
            Rows(Lig).EntireRow.Hidden = True ' il masque la ligne
        End If
    Next
    ActiveSheet.PrintPreview 'pour voir sans imprimer
    'ActiveSheet.PrintOut ' pour imrimer directement
    ActiveSheet.Rows.Hidden = False 'affiche toutes les lignes masquées
End Sub

#6

Merci de ce retour.
mais mon problème reste entier. ça ne fonctionne pas.

Excel considère que mes cellules ne sont pas vides car elles contiennent des formules et donc aucune ligne n’est masquée.

Merci de votre aide


#7

Re,

Difficile de résoudre ton problème sans savoir comment est conçu ton classeur

MDO100 t’explique un peu plus haut la manière de poster un fichier


#8

Re,

Alors bizarrement tu arrive à placer des classeurs dans des forums

mais pas ici :face_with_raised_eyebrow:

Sub ImprimeSansVide()

Dim Plage As Range
On Error Resume Next
Application.ScreenUpdating = False
  With ActiveSheet
    Set Plage = .Range("A3:A301").Cells.SpecialCells(xlCellTypeBlanks)
      If Not Plage Is Nothing Then Plage.Rows.Hidden = True
    .PrintPreview 'pour voir sans imprimer
    '.PrintOut ' pour imprimer directement
    .Rows.Hidden = False
  End With
End Sub

Gestion des heures.xlsm (47,6 Ko)


#9

Voici mon fichier exemple

Gestion des heures.xlsm (46,4 Ko)

La macro ci dessus ne fonctionne pas non plus.
peut être qu’avec mon fichier vous allez pouvoir trouver une solution.

merci en tout cas


#10

Re,
Chez moi, cela fonctionne trés bien
Gestion des heures.xlsm (46,4 Ko)


#11

Mon fichier initial est sur Excel Mac 2011 et cela ne fonctionne pas.
Je viens de faire l’essai sur mon lieu de travail (sur PC) et cela ne fonctionne pas non plus.

Dans les deux cas, j’ai une première feuille imprimée et 6 autres vierges.

Merci


#12

Eh bien il y a un truc qui cloche
Voici une copie d’écran de l’aperçu d’impression


#13

J’ai le même aperçu avant impression, mais avec 6 pages blanches à la suite


#14

Re,

Remplace la macro par celle-ci

Sub ImprimeSansVide()

Dim Plage As Range, Dl%
On Error Resume Next
Dl = Range("A" & Rows.Count).End(xlUp).Row
Application.Calculation = xlCalculationManual
  For i = Dl To 3 Step -1
    If Cells(i, 1) = "" Then
      Rows(i).Rows.Hidden = True
    End If
  Next i
ActiveSheet.PrintPreview 'pour voir sans imprimer
'ActiveSheet.PrintOut ' pour imprimer directement
Rows.Hidden = False
 Application.Calculation = True
End Sub


#15

Super ça fonctionne.
C’est un peu long quand on a beaucoup de lignes mais c’est très satisfaisant.

Un grand merci pour votre contribution.


#16

Re,
Une petite erreur de ma part dans le code que je viens de voir
remplacer

par

application.Calculation=xlCalculationAutomatic

Sinon toute les calculs ne seront pas afficher automatiquement


#17

Super !
ça met plus que quelques secondes. Merci

Et pour remettre les lignes à leur hauteur d’origine après impression ?

Merci beaucoup.


#18

Bonjour,

Tu as ôté cette ligne

replace-la juste avant application.Calculation=xlCalculationAutomatic :wink: