OVH Cloud OVH Cloud

Galère avec une impression

6 réponses
Avatar
Greg
Bonjour à tous,

Voilà mon problème

J'ai un tableau qui s'étend de A1 à G1000.

A l'intérieur il y a des formules en SI de façon à avoir des cellules vides
("") selon les calculs.

Ansi lorsque les paramêtres du tableau sont entrés, le tableau se rempli
automatiquement, il peut donc s'étendre de A2:G10 tout comme A2:G500.

Comment imprimer la (ou les feuilles) qui contiennent des données, afin
d'éviter d'imprimer 110 pages (dont 109 de vierges).

Merci d'avance pour vos réponses.

Cordialement,

Greg

P.S. : je pensais qu'en definissant une zone d'impression il ignorerai les
cellules vides, hé non !!!

6 réponses

Avatar
Nicolas B.
Salut Greg,

Insère le code suivant dans le module de la feuille. Il redimensionne la
zone d'impression à chaque modification dans la feuille.

Private Sub Worksheet_Change(ByVal Target As Range)
Do
i = i + 1
Loop While Cells(i, 7).Value <> ""
ActiveSheet.PageSetup.PrintArea = Range([A1], [G1].Offset(i - 2)).Address
End Sub


A+
Nicolas B.


Greg wrote:
Bonjour à tous,

Voilà mon problème

J'ai un tableau qui s'étend de A1 à G1000.

A l'intérieur il y a des formules en SI de façon à avoir des cellules vides
("") selon les calculs.

Ansi lorsque les paramêtres du tableau sont entrés, le tableau se rempli
automatiquement, il peut donc s'étendre de A2:G10 tout comme A2:G500.

Comment imprimer la (ou les feuilles) qui contiennent des données, afin
d'éviter d'imprimer 110 pages (dont 109 de vierges).

Merci d'avance pour vos réponses.

Cordialement,

Greg

P.S. : je pensais qu'en definissant une zone d'impression il ignorerai les
cellules vides, hé non !!!




Avatar
Greg
J'ai copié le code mais ça ne fonctionne pas.

Peux tu me redonner la synthaxe pour un tableau se trouvant en M1:S1000
(j'ai essayé de modifier le code mais rien) et me dire où il faut copier ce
code exactement.

Merci encore.

Greg


"Greg" a écrit dans le message de news:
cgdc7t$o30$
Bonjour à tous,

Voilà mon problème

J'ai un tableau qui s'étend de A1 à G1000.

A l'intérieur il y a des formules en SI de façon à avoir des cellules
vides

("") selon les calculs.

Ansi lorsque les paramêtres du tableau sont entrés, le tableau se rempli
automatiquement, il peut donc s'étendre de A2:G10 tout comme A2:G500.

Comment imprimer la (ou les feuilles) qui contiennent des données, afin
d'éviter d'imprimer 110 pages (dont 109 de vierges).

Merci d'avance pour vos réponses.

Cordialement,

Greg

P.S. : je pensais qu'en definissant une zone d'impression il ignorerai les
cellules vides, hé non !!!




Avatar
Nicolas B.
Pour placer le code : Dans Excel, fais ALT + F11 pour ouvrir l'éditeur
VBA. Dans le volet de gauche, tu as un genre d'explorateur. Double
clique sur la feuille concernée puis tu colles le code dans la fenêtre
qui s'affiche à droite :

Private Sub Worksheet_Change(ByVal Target As Range)
Do
i = i + 1
Loop While Cells(i, 7).Value <> ""
ActiveSheet.PageSetup.PrintArea = Range([A1], _
[G1].Offset(i - 2)).Address
End Sub

Pour le tableau en M1:S1000, remplace la ligne
ActiveSheet.PageSetup.PrintArea = Range([A1], _
[G1].Offset(i - 2)).Address
par
ActiveSheet.PageSetup.PrintArea = Range([M1], _
[S1].Offset(i - 2)).Address


A+
Nicolas B.


Greg wrote:
J'ai copié le code mais ça ne fonctionne pas.

Peux tu me redonner la synthaxe pour un tableau se trouvant en M1:S1000
(j'ai essayé de modifier le code mais rien) et me dire où il faut copier ce
code exactement.

Merci encore.

Greg


"Greg" a écrit dans le message de news:
cgdc7t$o30$

Bonjour à tous,

Voilà mon problème

J'ai un tableau qui s'étend de A1 à G1000.

A l'intérieur il y a des formules en SI de façon à avoir des cellules


vides

("") selon les calculs.

Ansi lorsque les paramêtres du tableau sont entrés, le tableau se rempli
automatiquement, il peut donc s'étendre de A2:G10 tout comme A2:G500.

Comment imprimer la (ou les feuilles) qui contiennent des données, afin
d'éviter d'imprimer 110 pages (dont 109 de vierges).

Merci d'avance pour vos réponses.

Cordialement,

Greg

P.S. : je pensais qu'en definissant une zone d'impression il ignorerai les
cellules vides, hé non !!!









Avatar
Vincent
Bonsoir Greg

A adapter

Sub Tri_impression()
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="toto" ' si il y a un mot de passe sur la
feuille
Range("A2:G1000").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Selection.AutoFilter
ActiveSheet.Protect Password:="toto" ' si il y a un mot de passe sur la
feuille
Application.ScreenUpdating = True
End Sub

Cordialement


"Greg" a écrit dans le message de
news:cgdc7t$o30$
Bonjour à tous,

Voilà mon problème

J'ai un tableau qui s'étend de A1 à G1000.

A l'intérieur il y a des formules en SI de façon à avoir des cellules
vides

("") selon les calculs.

Ansi lorsque les paramêtres du tableau sont entrés, le tableau se rempli
automatiquement, il peut donc s'étendre de A2:G10 tout comme A2:G500.

Comment imprimer la (ou les feuilles) qui contiennent des données, afin
d'éviter d'imprimer 110 pages (dont 109 de vierges).

Merci d'avance pour vos réponses.

Cordialement,

Greg

P.S. : je pensais qu'en definissant une zone d'impression il ignorerai les
cellules vides, hé non !!!




Avatar
Nicolas B.
Salut Vincent,

Il est à mon avis plus simple de modifier la propriété PrintAera de la
feuille que d'utiliser un filtre auto pour n'imprimer que la plage
nécessaire. Le test de chaque cellule une à une pour déterminer
l'étendue à imprimer est, certes, peut-être (pas vérifié...) un peu plus
long qu'un filtre auto ; mais avec PrintAera, le coup est rattrapé car
aucune modification n'est appliquée à la feuille.


A+
Nicolas B.


Vincent wrote:
Bonsoir Greg

A adapter

Sub Tri_impression()
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="toto" ' si il y a un mot de passe sur la
feuille
Range("A2:G1000").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Selection.AutoFilter
ActiveSheet.Protect Password:="toto" ' si il y a un mot de passe sur la
feuille
Application.ScreenUpdating = True
End Sub

Cordialement


Avatar
Vincent
Merci Nicolas.
Bien vu !
@ +

"Nicolas B." a écrit dans le message
de news:%
Salut Vincent,

Il est à mon avis plus simple de modifier la propriété PrintAera de la
feuille que d'utiliser un filtre auto pour n'imprimer que la plage
nécessaire. Le test de chaque cellule une à une pour déterminer
l'étendue à imprimer est, certes, peut-être (pas vérifié...) un peu plus
long qu'un filtre auto ; mais avec PrintAera, le coup est rattrapé car
aucune modification n'est appliquée à la feuille.


A+
Nicolas B.


Vincent wrote:
Bonsoir Greg

A adapter

Sub Tri_impression()
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="toto" ' si il y a un mot de passe sur
la


feuille
Range("A2:G1000").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Selection.AutoFilter
ActiveSheet.Protect Password:="toto" ' si il y a un mot de passe sur la
feuille
Application.ScreenUpdating = True
End Sub

Cordialement