Dans un tableau défini par une zone d'impression, je souhaite imprimer
uniquement les lignes avec des données et exclure les lignes soit vides,
soit avec le résultat d'une formule égal à 0.
Avec la fonction mise en page/feuille/erreur de cellule comme <vide>, ça ne
marche pas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bourby
Bonjour, pas d'idée dans Excel, mais voici une macro qui fait le boulot. A placer dans un module standard.
Sub ZoneSansVides() Dim Li As Long, Co As Integer, Zero As Boolean
With Range(ActiveSheet.PageSetup.PrintArea) Li = .Row Co = .Column For i = 1 To .Rows.Count Zero = False If Cells(Li + i - 1, 256).End(xlToLeft).Column < Co Then Zero = True GoTo MasquerLigne End If If Cells(Li + i - 1, 256).End(xlToLeft).Column = Co Then If Cells(Li + i - 1, 256).End(xlToLeft) = 0 Then Zero = True GoTo MasquerLigne End If End If
For j = Co To Cells(Li + i - 1, 256).End(xlToLeft).Column k = .Cells(1, 1).Offset(i - 1, j - 1) If .Cells(1, 1).Offset(i - 1, j - 1) <> 0 Then Zero = False Exit For End If Zero = True Next MasquerLigne: If Zero Then Rows(Li + i - 1).EntireRow.Hidden = True Next i End With End Sub
(Si tu connais un peu VBA, et que tu veux qu'elle s'active automatiquement à chaque impression, tu pourras aussi la déclencher par l'évènement _beforePrint, par exemple:
Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveWorksheet.Name = "nomDeMaFeuille" Then ZoneSansVides End Sub
code à placer dans l'objet Thisworkbook, en sélectionnant Workbook dans la fenêtre en haut à gauche, et BeforePrint dans celle de droite: il génère ainsi les lignes Sub... et end sub, et reconnaît qu'il s'agit de la procédure évènementielle; si tu copiais mes 3 lignes dans la page blanche, il ne les considérerait pas comme une procédure à déclencher avant chaque impression)
Cordialement
Bourby
Michel wrote:
Bonjour,
Dans un tableau défini par une zone d'impression, je souhaite imprimer uniquement les lignes avec des données et exclure les lignes soit vides, soit avec le résultat d'une formule égal à 0.
Avec la fonction mise en page/feuille/erreur de cellule comme <vide>, ça ne marche pas.
Quelqu'un a une idée ?
Michel
Bonjour,
pas d'idée dans Excel, mais voici une macro qui fait le boulot.
A placer dans un module standard.
Sub ZoneSansVides()
Dim Li As Long, Co As Integer, Zero As Boolean
With Range(ActiveSheet.PageSetup.PrintArea)
Li = .Row
Co = .Column
For i = 1 To .Rows.Count
Zero = False
If Cells(Li + i - 1, 256).End(xlToLeft).Column < Co Then
Zero = True
GoTo MasquerLigne
End If
If Cells(Li + i - 1, 256).End(xlToLeft).Column = Co Then
If Cells(Li + i - 1, 256).End(xlToLeft) = 0 Then
Zero = True
GoTo MasquerLigne
End If
End If
For j = Co To Cells(Li + i - 1, 256).End(xlToLeft).Column
k = .Cells(1, 1).Offset(i - 1, j - 1)
If .Cells(1, 1).Offset(i - 1, j - 1) <> 0 Then
Zero = False
Exit For
End If
Zero = True
Next
MasquerLigne:
If Zero Then Rows(Li + i - 1).EntireRow.Hidden = True
Next i
End With
End Sub
(Si tu connais un peu VBA, et que tu veux qu'elle s'active
automatiquement à chaque impression, tu pourras aussi la déclencher par
l'évènement _beforePrint, par exemple:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveWorksheet.Name = "nomDeMaFeuille" Then ZoneSansVides
End Sub
code à placer dans l'objet Thisworkbook, en sélectionnant Workbook dans
la fenêtre en haut à gauche, et BeforePrint dans celle de droite: il
génère ainsi les lignes Sub... et end sub, et reconnaît qu'il s'agit de
la procédure évènementielle; si tu copiais mes 3 lignes dans la page
blanche, il ne les considérerait pas comme une procédure à déclencher
avant chaque impression)
Cordialement
Bourby
Michel wrote:
Bonjour,
Dans un tableau défini par une zone d'impression, je souhaite imprimer
uniquement les lignes avec des données et exclure les lignes soit vides,
soit avec le résultat d'une formule égal à 0.
Avec la fonction mise en page/feuille/erreur de cellule comme <vide>, ça ne
marche pas.
Bonjour, pas d'idée dans Excel, mais voici une macro qui fait le boulot. A placer dans un module standard.
Sub ZoneSansVides() Dim Li As Long, Co As Integer, Zero As Boolean
With Range(ActiveSheet.PageSetup.PrintArea) Li = .Row Co = .Column For i = 1 To .Rows.Count Zero = False If Cells(Li + i - 1, 256).End(xlToLeft).Column < Co Then Zero = True GoTo MasquerLigne End If If Cells(Li + i - 1, 256).End(xlToLeft).Column = Co Then If Cells(Li + i - 1, 256).End(xlToLeft) = 0 Then Zero = True GoTo MasquerLigne End If End If
For j = Co To Cells(Li + i - 1, 256).End(xlToLeft).Column k = .Cells(1, 1).Offset(i - 1, j - 1) If .Cells(1, 1).Offset(i - 1, j - 1) <> 0 Then Zero = False Exit For End If Zero = True Next MasquerLigne: If Zero Then Rows(Li + i - 1).EntireRow.Hidden = True Next i End With End Sub
(Si tu connais un peu VBA, et que tu veux qu'elle s'active automatiquement à chaque impression, tu pourras aussi la déclencher par l'évènement _beforePrint, par exemple:
Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveWorksheet.Name = "nomDeMaFeuille" Then ZoneSansVides End Sub
code à placer dans l'objet Thisworkbook, en sélectionnant Workbook dans la fenêtre en haut à gauche, et BeforePrint dans celle de droite: il génère ainsi les lignes Sub... et end sub, et reconnaît qu'il s'agit de la procédure évènementielle; si tu copiais mes 3 lignes dans la page blanche, il ne les considérerait pas comme une procédure à déclencher avant chaque impression)
Cordialement
Bourby
Michel wrote:
Bonjour,
Dans un tableau défini par une zone d'impression, je souhaite imprimer uniquement les lignes avec des données et exclure les lignes soit vides, soit avec le résultat d'une formule égal à 0.
Avec la fonction mise en page/feuille/erreur de cellule comme <vide>, ça ne marche pas.