Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

impression multiple de plage filtrée

7 réponses
Avatar
Freedo
Bonjour =E0 toutes et =E0 tous,
A priori c'est peut-=EAtre long comme explication mais=20
laiss=E9 =E0 votre perspicacit=E9 je suppose qu'il n'y qua=20
rajouter quelques lignes pour mon probl=E8me.=20
Comment r=E9aliser l'impression de feuilles filtr=E9es=20
s=E9par=E9ment.
Au d=E9part j'ai un tableau de donn=E9es dans la=20
feuille "G=E9n=E9ral"
En A2 la date, en B2 le n=B0 de chantier exemple 03054 et=20
de C =E0 AZ des prestations horaires.
Ma premi=E8re op=E9ration manuelle est de filtrer la colonne=20
A depuis a2 suivant la plage dates ;
Jusque l=E0 tout est normal !
Ensuite sur base de ce tableau filtr=E9, j'applique un Tri =20
sur la colonne B depuis B2 par n=B0 chantier ;
Voil=E0 =E0 partir de ce tableau (filtr=E9) et Tri=E9 j'aimerai=20
automatiser le filtre sur chaque n=B0 de chantier=20
diff=E9rent puis l'envoyer dans la feuille =AB=20
=E0Facturer =BB , appliquer tous les formatages et commande=20
d'impression s=E9par=E9es pour chaque chantier.
Au stade actuel, j'ai d=E9j=E0 toutes les macros pour=20
finaliser jusqu'=E0 l'impression d'un chantier filtr=E9.
Ma question principale est comment imprimer=20
automatiquement tous les chantiers (filtr=E9s) s=E9par=E9ment=20
sur base de la plage filtr=E9e par dates de la feuille =AB=20
G=E9n=E9ral =BB ?
Merci de suivre=20
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille =AB G=E9n=E9ral =BB
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=3DRange("A2"),=20
Order1:=3DxlAscending, Key2:=3DRange("B2") _
, Order2:=3DxlAscending, Header:=3DxlYes,=20
OrderCustom:=3D1, MatchCase:=3DFalse _
, Orientation:=3DxlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=3DRange("b2"),=20
Order1:=3DxlAscending, Key2:=3DRange("a2") _
, Order2:=3DxlAscending, Header:=3DxlYes,=20
OrderCustom:=3D1, MatchCase:=3DFalse _
, Orientation:=3DxlTopToBottom
Range("A2").Select
End Sub
'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
2.Dans ma feuille "=E0Facturer"
Private Sub CommandButton1_Click()
'Sub VidelaS=E9lection()
Application.ScreenUpdating =3D False
' Appelle la feuille "=E0Facturer" pour initialisation
Sheets("=E0Facturer").Select
' affiche toutes les colonnes qui ont =E9t=E9 masqu=E9es
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden =3D False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux encodages
'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden =3D False
' Selection.Hidden =3D False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating =3D True
' Appelle la feuille "G=E9n=E9ral" et applique le=20
filtre "Tous" sur la colonne "Chantier"
Sheets("G=E9n=E9ral").Select
Selection.AutoFilter Field:=3D2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub =E0Facturer()
Application.ScreenUpdating =3D False
'affiche toutes les colonnes qui ont =E9t=E9 masqu=E9es par la=20
facturation pr=E9c=E9dente
Application.ScreenUpdating =3D False
Sheets("=E0Facturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth =3D 9
Range("d12").Select
'Message test si une s=E9lection filtr=E9e est pr=EAte
rep =3D MsgBox("Avez-vous pr=E9par=E9 la s=E9lection =E0 Facturer ?=20
( Maximum 1 mois et 1 seul chantier )", 4)
If rep =3D 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux encodages
' Worksheets("=E0Facturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtr=E9 vers la feuille "=E0facturer"
With Sheets("G=E9n=E9ral").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x =3D 2 _
Else: x =3D .Item(2)(1).Row
End With
y =3D Sheets("G=E9n=E9ral").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("G=E9n=E9ral").Range("a" & x & ":az" & y).Copy
Sheets("=E0Facturer").Range("b12").PasteSpecial=20
Paste:=3DxlValues
Application.CutCopyMode =3D False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 =3D "=3DSUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 =3D "=3DR[-2]C*R[-1]C"
Application.ScreenUpdating =3D True
'masque les colonnes inutiles
Application.ScreenUpdating =3D False
For i =3D 4 To 53
If Cells(43, i) =3D "" Or Cells(43, i) =3D 0 Then Columns
(i).Hidden =3D True
Next
'envoie =E0 l'impression la feuille "=E0 Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=3D1,=20
Collate:=3DTrue
Range("B11").Select
Application.ScreenUpdating =3D True
1000:
Range("b12").Select
End Sub

7 réponses

Avatar
Denis Michon
Bonjour Freedo,


Je n'ai pas le temps de lire tout ce code ... mais le principe est le suivant :

Si tu as pris soin de laisser au MOINS UNE LIGNE entre copie du résultat de tes filtres sur la feuille "Résultats"

Voici ce que pourrait avoir l'air ta macro :

'-------------------------------
Sub Imprimer()

Dim Rg As Range
With Worksheets("àFacturer ") ' à Déterminer
Set Rg = .UsedRange.SpecialCells(xlCellTypeConstants)
For Each area In Rg.Areas
.PageSetup.PrintArea = area.Address
.PrintPreview 'or .Printout avec paramètres désirés
'Tu lances l'impression avant cette ligne de code
.PageSetup.PrintArea = ""
Next
End With
Set Rg = Nothing

End Sub
'-------------------------------


Salutations!





"Freedo" a écrit dans le message de
news:0aae01c3a470$ede7cdf0$
Bonjour à toutes et à tous,
A priori c'est peut-être long comme explication mais
laissé à votre perspicacité je suppose qu'il n'y qua
rajouter quelques lignes pour mon problème.
Comment réaliser l'impression de feuilles filtrées
séparément.
Au départ j'ai un tableau de données dans la
feuille "Général"
En A2 la date, en B2 le n° de chantier exemple 03054 et
de C à AZ des prestations horaires.
Ma première opération manuelle est de filtrer la colonne
A depuis a2 suivant la plage dates ;
Jusque là tout est normal !
Ensuite sur base de ce tableau filtré, j'applique un Tri
sur la colonne B depuis B2 par n° chantier ;
Voilà à partir de ce tableau (filtré) et Trié j'aimerai
automatiser le filtre sur chaque n° de chantier
différent puis l'envoyer dans la feuille «
àFacturer » , appliquer tous les formatages et commande
d'impression séparées pour chaque chantier.
Au stade actuel, j'ai déjà toutes les macros pour
finaliser jusqu'à l'impression d'un chantier filtré.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrés) séparément
sur base de la plage filtrée par dates de la feuille «
Général » ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille « Général »
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=Range("b2"),
Order1:=xlAscending, Key2:=Range("a2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'======================================== 2.Dans ma feuille "àFacturer"
Private Sub CommandButton1_Click()
'Sub VidelaSélection()
Application.ScreenUpdating = False
' Appelle la feuille "àFacturer" pour initialisation
Sheets("àFacturer").Select
' affiche toutes les colonnes qui ont été masquées
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden = False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux encodages
'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden = False
' Selection.Hidden = False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating = True
' Appelle la feuille "Général" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Général").Select
Selection.AutoFilter Field:=2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub àFacturer()
Application.ScreenUpdating = False
'affiche toutes les colonnes qui ont été masquées par la
facturation précédente
Application.ScreenUpdating = False
Sheets("àFacturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth = 9
Range("d12").Select
'Message test si une sélection filtrée est prête
rep = MsgBox("Avez-vous préparé la sélection à Facturer ?
( Maximum 1 mois et 1 seul chantier )", 4)
If rep = 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux encodages
' Worksheets("àFacturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtré vers la feuille "àfacturer"
With Sheets("Général").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x = 2 _
Else: x = .Item(2)(1).Row
End With
y = Sheets("Général").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Général").Range("a" & x & ":az" & y).Copy
Sheets("àFacturer").Range("b12").PasteSpecial
Paste:=xlValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 = "=R[-2]C*R[-1]C"
Application.ScreenUpdating = True
'masque les colonnes inutiles
Application.ScreenUpdating = False
For i = 4 To 53
If Cells(43, i) = "" Or Cells(43, i) = 0 Then Columns
(i).Hidden = True
Next
'envoie à l'impression la feuille "à Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1,
Collate:=True
Range("B11").Select
Application.ScreenUpdating = True
1000:
Range("b12").Select
End Sub
Avatar
Oleane
Bonjour,
ci-joint un code qui devrait peut être t'aider.
j'ai un fichier dont je dois effectuer des impressions filtrées en fonction
des colonnes 1 et 2

' IMPRESSION DES FEUILLES
For i = 5 To 15
Selection.AutoFilter Field:=1, Criteria1:Îlls(i, 18)
If Val(Cells(311, 2)) > 0 Then ActiveWindow.SelectedSheets.PrintOut
Copies:=1, Collate:=True
Next i
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=1, Criteria1:="="
Selection.AutoFilter Field:=2, Criteria1:="<>"
For i = 5 To 12
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2, Criteria1:Îlls(i, 19)
If Val(Cells(311, 2)) > 0 Then ActiveWindow.SelectedSheets.PrintOut
Copies:=1, Collate:=True
Next i

cells(311,2) est un sous.total de la colonne.
vàlà missieu. j'espère pouvoir t'aider
Hervé


"Freedo" a écrit dans le
message de news:0aae01c3a470$ede7cdf0$
Bonjour à toutes et à tous,
A priori c'est peut-être long comme explication mais
laissé à votre perspicacité je suppose qu'il n'y qua
rajouter quelques lignes pour mon problème.
Comment réaliser l'impression de feuilles filtrées
séparément.
Au départ j'ai un tableau de données dans la
feuille "Général"
En A2 la date, en B2 le n° de chantier exemple 03054 et
de C à AZ des prestations horaires.
Ma première opération manuelle est de filtrer la colonne
A depuis a2 suivant la plage dates ;
Jusque là tout est normal !
Ensuite sur base de ce tableau filtré, j'applique un Tri
sur la colonne B depuis B2 par n° chantier ;
Voilà à partir de ce tableau (filtré) et Trié j'aimerai
automatiser le filtre sur chaque n° de chantier
différent puis l'envoyer dans la feuille «
àFacturer » , appliquer tous les formatages et commande
d'impression séparées pour chaque chantier.
Au stade actuel, j'ai déjà toutes les macros pour
finaliser jusqu'à l'impression d'un chantier filtré.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrés) séparément
sur base de la plage filtrée par dates de la feuille «
Général » ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille « Général »
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=Range("b2"),
Order1:=xlAscending, Key2:=Range("a2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'======================================== 2.Dans ma feuille "àFacturer"
Private Sub CommandButton1_Click()
'Sub VidelaSélection()
Application.ScreenUpdating = False
' Appelle la feuille "àFacturer" pour initialisation
Sheets("àFacturer").Select
' affiche toutes les colonnes qui ont été masquées
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden = False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux encodages
'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden = False
' Selection.Hidden = False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating = True
' Appelle la feuille "Général" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Général").Select
Selection.AutoFilter Field:=2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub àFacturer()
Application.ScreenUpdating = False
'affiche toutes les colonnes qui ont été masquées par la
facturation précédente
Application.ScreenUpdating = False
Sheets("àFacturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth = 9
Range("d12").Select
'Message test si une sélection filtrée est prête
rep = MsgBox("Avez-vous préparé la sélection à Facturer ?
( Maximum 1 mois et 1 seul chantier )", 4)
If rep = 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux encodages
' Worksheets("àFacturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtré vers la feuille "àfacturer"
With Sheets("Général").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x = 2 _
Else: x = .Item(2)(1).Row
End With
y = Sheets("Général").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Général").Range("a" & x & ":az" & y).Copy
Sheets("àFacturer").Range("b12").PasteSpecial
Paste:=xlValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 = "=R[-2]C*R[-1]C"
Application.ScreenUpdating = True
'masque les colonnes inutiles
Application.ScreenUpdating = False
For i = 4 To 53
If Cells(43, i) = "" Or Cells(43, i) = 0 Then Columns
(i).Hidden = True
Next
'envoie à l'impression la feuille "à Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1,
Collate:=True
Range("B11").Select
Application.ScreenUpdating = True
1000:
Range("b12").Select
End Sub
Avatar
Freedo
Bonjour Denis,
Merci de bien vouloir m'aider;
J'avoue ne pas comprendre très bien ce que tu me propose;
Une petite précision peut-etre!
Voici ce que me donne l'enregistreur de macro quand je
fais le processus manuellement
Sub Macro01()
' ici je suis sur la feuille "Général"
Range("A2").Select
Selection.AutoFilter Field:=1,
Criteria1:=">30/09/2003", Operator:=xlAnd _
, Criteria2:="<1/11/2003"
Selection.AutoFilter Field:=2, Criteria1:="03.032"
' je vais sur la feuille "àFacturer" et j'actionne un
bouton de commande pour facturer
Sheets("àFacturer").Select
'après impression je remets à vide les cellules remplies
par un autre bouton
'et je retourne sur la feuille "Général" pour choisir un
filtre sur un autre n° de chantier et je recommence
Selection.AutoFilter Field:=2, Criteria1:="03.037"
Sheets("àFacturer").Select
End Sub
Qu'en dis-tu ?
freedo
-----Message d'origine-----
Bonjour Freedo,


Je n'ai pas le temps de lire tout ce code ... mais le
principe est le suivant :


Si tu as pris soin de laisser au MOINS UNE LIGNE entre
copie du résultat de tes filtres sur la feuille "Résultats"


Voici ce que pourrait avoir l'air ta macro :

'-------------------------------
Sub Imprimer()

Dim Rg As Range
With Worksheets("àFacturer ") ' à Déterminer
Set Rg = .UsedRange.SpecialCells(xlCellTypeConstants)
For Each area In Rg.Areas
.PageSetup.PrintArea = area.Address
.PrintPreview 'or .Printout avec paramètres
désirés

'Tu lances l'impression avant cette ligne de code
.PageSetup.PrintArea = ""
Next
End With
Set Rg = Nothing

End Sub
'-------------------------------


Salutations!





"Freedo" a
écrit dans le message de

news:0aae01c3a470$ede7cdf0$
Bonjour à toutes et à tous,
A priori c'est peut-être long comme explication mais
laissé à votre perspicacité je suppose qu'il n'y qua
rajouter quelques lignes pour mon problème.
Comment réaliser l'impression de feuilles filtrées
séparément.
Au départ j'ai un tableau de données dans la
feuille "Général"
En A2 la date, en B2 le n° de chantier exemple 03054 et
de C à AZ des prestations horaires.
Ma première opération manuelle est de filtrer la colonne
A depuis a2 suivant la plage dates ;
Jusque là tout est normal !
Ensuite sur base de ce tableau filtré, j'applique un Tri
sur la colonne B depuis B2 par n° chantier ;
Voilà à partir de ce tableau (filtré) et Trié j'aimerai
automatiser le filtre sur chaque n° de chantier
différent puis l'envoyer dans la feuille «
àFacturer » , appliquer tous les formatages et commande
d'impression séparées pour chaque chantier.
Au stade actuel, j'ai déjà toutes les macros pour
finaliser jusqu'à l'impression d'un chantier filtré.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrés) séparément
sur base de la plage filtrée par dates de la feuille «
Général » ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille « Général »
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=Range("b2"),
Order1:=xlAscending, Key2:=Range("a2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'======================== =================
2.Dans ma feuille "àFacturer"
Private Sub CommandButton1_Click()
'Sub VidelaSélection()
Application.ScreenUpdating = False
' Appelle la feuille "àFacturer" pour initialisation
Sheets("àFacturer").Select
' affiche toutes les colonnes qui ont été masquées
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden = False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux encodages
'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden = False
' Selection.Hidden = False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating = True
' Appelle la feuille "Général" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Général").Select
Selection.AutoFilter Field:=2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub àFacturer()
Application.ScreenUpdating = False
'affiche toutes les colonnes qui ont été masquées par la
facturation précédente
Application.ScreenUpdating = False
Sheets("àFacturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth = 9
Range("d12").Select
'Message test si une sélection filtrée est prête
rep = MsgBox("Avez-vous préparé la sélection à Facturer ?
( Maximum 1 mois et 1 seul chantier )", 4)
If rep = 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux encodages
' Worksheets("àFacturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtré vers la feuille "àfacturer"
With Sheets("Général").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x = 2 _
Else: x = .Item(2)(1).Row
End With
y = Sheets("Général").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Général").Range("a" & x & ":az" & y).Copy
Sheets("àFacturer").Range("b12").PasteSpecial
Paste:=xlValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 = "=R[-2]C*R[-1]C"
Application.ScreenUpdating = True
'masque les colonnes inutiles
Application.ScreenUpdating = False
For i = 4 To 53
If Cells(43, i) = "" Or Cells(43, i) = 0 Then Columns
(i).Hidden = True
Next
'envoie à l'impression la feuille "à Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1,
Collate:=True
Range("B11").Select
Application.ScreenUpdating = True
1000:
Range("b12").Select
End Sub


.



Avatar
FReedo
Bonjour Hervé,
Merci de suivre ce probleme;
en fait je n'imprime pas les feuilles du classeur mais une
page générée par le résultat filtré d'un tableau de la
feuille "Général" à l'aide d'un bouton qui est dans la
feuille"àFacturer" et après impression je recommence avec
un nouveau filtre sur le même tableau de base et je
commande l'impression de cet autre résultat via le bouton
placé dans la feuille"àFacturer"
Peux-tu m'en dire plus?
Freedo
-----Message d'origine-----
Bonjour,
ci-joint un code qui devrait peut être t'aider.
j'ai un fichier dont je dois effectuer des impressions
filtrées en fonction

des colonnes 1 et 2

' IMPRESSION DES FEUILLES
For i = 5 To 15
Selection.AutoFilter Field:=1, Criteria1:Îlls(i,
18)

If Val(Cells(311, 2)) > 0 Then
ActiveWindow.SelectedSheets.PrintOut

Copies:=1, Collate:=True
Next i
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=1, Criteria1:="="
Selection.AutoFilter Field:=2, Criteria1:="<>"
For i = 5 To 12
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2, Criteria1:Îlls(i, 19)
If Val(Cells(311, 2)) > 0 Then
ActiveWindow.SelectedSheets.PrintOut

Copies:=1, Collate:=True
Next i

cells(311,2) est un sous.total de la colonne.
vàlà missieu. j'espère pouvoir t'aider
Hervé


"Freedo" a
écrit dans le

message de news:0aae01c3a470$ede7cdf0$
Bonjour à toutes et à tous,
A priori c'est peut-être long comme explication mais
laissé à votre perspicacité je suppose qu'il n'y qua
rajouter quelques lignes pour mon problème.
Comment réaliser l'impression de feuilles filtrées
séparément.
Au départ j'ai un tableau de données dans la
feuille "Général"
En A2 la date, en B2 le n° de chantier exemple 03054 et
de C à AZ des prestations horaires.
Ma première opération manuelle est de filtrer la colonne
A depuis a2 suivant la plage dates ;
Jusque là tout est normal !
Ensuite sur base de ce tableau filtré, j'applique un Tri
sur la colonne B depuis B2 par n° chantier ;
Voilà à partir de ce tableau (filtré) et Trié j'aimerai
automatiser le filtre sur chaque n° de chantier
différent puis l'envoyer dans la feuille «
àFacturer » , appliquer tous les formatages et commande
d'impression séparées pour chaque chantier.
Au stade actuel, j'ai déjà toutes les macros pour
finaliser jusqu'à l'impression d'un chantier filtré.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrés) séparément
sur base de la plage filtrée par dates de la feuille «
Général » ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille « Général »
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=Range("b2"),
Order1:=xlAscending, Key2:=Range("a2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'======================== =================
2.Dans ma feuille "àFacturer"
Private Sub CommandButton1_Click()
'Sub VidelaSélection()
Application.ScreenUpdating = False
' Appelle la feuille "àFacturer" pour initialisation
Sheets("àFacturer").Select
' affiche toutes les colonnes qui ont été masquées
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden = False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux encodages
'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden = False
' Selection.Hidden = False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating = True
' Appelle la feuille "Général" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Général").Select
Selection.AutoFilter Field:=2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub àFacturer()
Application.ScreenUpdating = False
'affiche toutes les colonnes qui ont été masquées par la
facturation précédente
Application.ScreenUpdating = False
Sheets("àFacturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth = 9
Range("d12").Select
'Message test si une sélection filtrée est prête
rep = MsgBox("Avez-vous préparé la sélection à Facturer ?
( Maximum 1 mois et 1 seul chantier )", 4)
If rep = 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux encodages
' Worksheets("àFacturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtré vers la feuille "àfacturer"
With Sheets("Général").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x = 2 _
Else: x = .Item(2)(1).Row
End With
y = Sheets("Général").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Général").Range("a" & x & ":az" & y).Copy
Sheets("àFacturer").Range("b12").PasteSpecial
Paste:=xlValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 = "=R[-2]C*R[-1]C"
Application.ScreenUpdating = True
'masque les colonnes inutiles
Application.ScreenUpdating = False
For i = 4 To 53
If Cells(43, i) = "" Or Cells(43, i) = 0 Then Columns
(i).Hidden = True
Next
'envoie à l'impression la feuille "à Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1,
Collate:=True
Range("B11").Select
Application.ScreenUpdating = True
1000:
Range("b12").Select
End Sub


.



Avatar
Denis Michon
Bonjour Freedo,

Comme indiqué dans ma réponse, je n'ai pas lu toute la question...

La procédure soumise se voulait une façon d'imprimer une feuille de résultat contenant plusieurs plages de cellules
issues de procédures de filtrage. À l'évidence même, la procédure ne contient aucune ligne de code sur la façon
d'effecteur ces filtres.

Je me suis laissé guider par l'"objet" de ton message.


Salutations!



"Freedo" a écrit dans le message de
news:073201c3a4f9$d5a9e8c0$
Bonjour Denis,
Merci de bien vouloir m'aider;
J'avoue ne pas comprendre très bien ce que tu me propose;
Une petite précision peut-etre!
Voici ce que me donne l'enregistreur de macro quand je
fais le processus manuellement
Sub Macro01()
' ici je suis sur la feuille "Général"
Range("A2").Select
Selection.AutoFilter Field:=1,
Criteria1:=">30/09/2003", Operator:=xlAnd _
, Criteria2:="<1/11/2003"
Selection.AutoFilter Field:=2, Criteria1:="03.032"
' je vais sur la feuille "àFacturer" et j'actionne un
bouton de commande pour facturer
Sheets("àFacturer").Select
'après impression je remets à vide les cellules remplies
par un autre bouton
'et je retourne sur la feuille "Général" pour choisir un
filtre sur un autre n° de chantier et je recommence
Selection.AutoFilter Field:=2, Criteria1:="03.037"
Sheets("àFacturer").Select
End Sub
Qu'en dis-tu ?
freedo
-----Message d'origine-----
Bonjour Freedo,


Je n'ai pas le temps de lire tout ce code ... mais le
principe est le suivant :


Si tu as pris soin de laisser au MOINS UNE LIGNE entre
copie du résultat de tes filtres sur la feuille "Résultats"


Voici ce que pourrait avoir l'air ta macro :

'-------------------------------
Sub Imprimer()

Dim Rg As Range
With Worksheets("àFacturer ") ' à Déterminer
Set Rg = .UsedRange.SpecialCells(xlCellTypeConstants)
For Each area In Rg.Areas
.PageSetup.PrintArea = area.Address
.PrintPreview 'or .Printout avec paramètres
désirés

'Tu lances l'impression avant cette ligne de code
.PageSetup.PrintArea = ""
Next
End With
Set Rg = Nothing

End Sub
'-------------------------------


Salutations!





"Freedo" a
écrit dans le message de

news:0aae01c3a470$ede7cdf0$
Bonjour à toutes et à tous,
A priori c'est peut-être long comme explication mais
laissé à votre perspicacité je suppose qu'il n'y qua
rajouter quelques lignes pour mon problème.
Comment réaliser l'impression de feuilles filtrées
séparément.
Au départ j'ai un tableau de données dans la
feuille "Général"
En A2 la date, en B2 le n° de chantier exemple 03054 et
de C à AZ des prestations horaires.
Ma première opération manuelle est de filtrer la colonne
A depuis a2 suivant la plage dates ;
Jusque là tout est normal !
Ensuite sur base de ce tableau filtré, j'applique un Tri
sur la colonne B depuis B2 par n° chantier ;
Voilà à partir de ce tableau (filtré) et Trié j'aimerai
automatiser le filtre sur chaque n° de chantier
différent puis l'envoyer dans la feuille «
àFacturer » , appliquer tous les formatages et commande
d'impression séparées pour chaque chantier.
Au stade actuel, j'ai déjà toutes les macros pour
finaliser jusqu'à l'impression d'un chantier filtré.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrés) séparément
sur base de la plage filtrée par dates de la feuille «
Général » ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille « Général »
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=Range("b2"),
Order1:=xlAscending, Key2:=Range("a2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'======================================== >2.Dans ma feuille "àFacturer"
Private Sub CommandButton1_Click()
'Sub VidelaSélection()
Application.ScreenUpdating = False
' Appelle la feuille "àFacturer" pour initialisation
Sheets("àFacturer").Select
' affiche toutes les colonnes qui ont été masquées
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden = False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux encodages
'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden = False
' Selection.Hidden = False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating = True
' Appelle la feuille "Général" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Général").Select
Selection.AutoFilter Field:=2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub àFacturer()
Application.ScreenUpdating = False
'affiche toutes les colonnes qui ont été masquées par la
facturation précédente
Application.ScreenUpdating = False
Sheets("àFacturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth = 9
Range("d12").Select
'Message test si une sélection filtrée est prête
rep = MsgBox("Avez-vous préparé la sélection à Facturer ?
( Maximum 1 mois et 1 seul chantier )", 4)
If rep = 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux encodages
' Worksheets("àFacturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtré vers la feuille "àfacturer"
With Sheets("Général").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x = 2 _
Else: x = .Item(2)(1).Row
End With
y = Sheets("Général").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Général").Range("a" & x & ":az" & y).Copy
Sheets("àFacturer").Range("b12").PasteSpecial
Paste:=xlValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 = "=R[-2]C*R[-1]C"
Application.ScreenUpdating = True
'masque les colonnes inutiles
Application.ScreenUpdating = False
For i = 4 To 53
If Cells(43, i) = "" Or Cells(43, i) = 0 Then Columns
(i).Hidden = True
Next
'envoie à l'impression la feuille "à Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1,
Collate:=True
Range("B11").Select
Application.ScreenUpdating = True
1000:
Range("b12").Select
End Sub


.



Avatar
Oleane
re-.
je m'explique
j'ai un tableau avec en colonne a des N° de camions, et en colonne b des
transporteurs
ce tableau comporte aussi des colis, poids et montants facturés.
le but de la manoeuvre est d'effectuer un tri par camion quelque soit le
transporteur, ensuite un tri par transporteur quelque soit le camion a
fin d'afficher et d'imprimer le ca réalisé par camion qqsoit le
transporteur, et le ca par transporteur qqsoit le camion.
j'ai donc repris la meme procédure d'enregistrement que toi en ajoutant une
boucle pour passer en revue tous les camions et tous les transporteurs.
la diff est que je dispose d"un champ reprenant tous les n° des camions, et
d'un autre reprenant tous les noms des transporteurs.
le nb de camion est connu. j'extrais le n° du camion dans ce champ puis
j'effectue mon tri. ne retenant que les valeurs > à 0 dans mon sous-total.
si tu veux je peux te fournir le fichier
bon courage
rv
"FReedo" a écrit dans le
message de news:08c001c3a4fb$6ea7c0a0$
Bonjour Hervé,
Merci de suivre ce probleme;
en fait je n'imprime pas les feuilles du classeur mais une
page générée par le résultat filtré d'un tableau de la
feuille "Général" à l'aide d'un bouton qui est dans la
feuille"àFacturer" et après impression je recommence avec
un nouveau filtre sur le même tableau de base et je
commande l'impression de cet autre résultat via le bouton
placé dans la feuille"àFacturer"
Peux-tu m'en dire plus?
Freedo
-----Message d'origine-----
Bonjour,
ci-joint un code qui devrait peut être t'aider.
j'ai un fichier dont je dois effectuer des impressions
filtrées en fonction

des colonnes 1 et 2

' IMPRESSION DES FEUILLES
For i = 5 To 15
Selection.AutoFilter Field:=1, Criteria1:Îlls(i,
18)

If Val(Cells(311, 2)) > 0 Then
ActiveWindow.SelectedSheets.PrintOut

Copies:=1, Collate:=True
Next i
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=1, Criteria1:="="
Selection.AutoFilter Field:=2, Criteria1:="<>"
For i = 5 To 12
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2, Criteria1:Îlls(i, 19)
If Val(Cells(311, 2)) > 0 Then
ActiveWindow.SelectedSheets.PrintOut

Copies:=1, Collate:=True
Next i

cells(311,2) est un sous.total de la colonne.
vàlà missieu. j'espère pouvoir t'aider
Hervé


"Freedo" a
écrit dans le

message de news:0aae01c3a470$ede7cdf0$
Bonjour à toutes et à tous,
A priori c'est peut-être long comme explication mais
laissé à votre perspicacité je suppose qu'il n'y qua
rajouter quelques lignes pour mon problème.
Comment réaliser l'impression de feuilles filtrées
séparément.
Au départ j'ai un tableau de données dans la
feuille "Général"
En A2 la date, en B2 le n° de chantier exemple 03054 et
de C à AZ des prestations horaires.
Ma première opération manuelle est de filtrer la colonne
A depuis a2 suivant la plage dates ;
Jusque là tout est normal !
Ensuite sur base de ce tableau filtré, j'applique un Tri
sur la colonne B depuis B2 par n° chantier ;
Voilà à partir de ce tableau (filtré) et Trié j'aimerai
automatiser le filtre sur chaque n° de chantier
différent puis l'envoyer dans la feuille «
àFacturer » , appliquer tous les formatages et commande
d'impression séparées pour chaque chantier.
Au stade actuel, j'ai déjà toutes les macros pour
finaliser jusqu'à l'impression d'un chantier filtré.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrés) séparément
sur base de la plage filtrée par dates de la feuille «
Général » ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille « Général »
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=Range("b2"),
Order1:=xlAscending, Key2:=Range("a2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'======================================== >2.Dans ma feuille "àFacturer"
Private Sub CommandButton1_Click()
'Sub VidelaSélection()
Application.ScreenUpdating = False
' Appelle la feuille "àFacturer" pour initialisation
Sheets("àFacturer").Select
' affiche toutes les colonnes qui ont été masquées
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden = False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux encodages
'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden = False
' Selection.Hidden = False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating = True
' Appelle la feuille "Général" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Général").Select
Selection.AutoFilter Field:=2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub àFacturer()
Application.ScreenUpdating = False
'affiche toutes les colonnes qui ont été masquées par la
facturation précédente
Application.ScreenUpdating = False
Sheets("àFacturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth = 9
Range("d12").Select
'Message test si une sélection filtrée est prête
rep = MsgBox("Avez-vous préparé la sélection à Facturer ?
( Maximum 1 mois et 1 seul chantier )", 4)
If rep = 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux encodages
' Worksheets("àFacturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtré vers la feuille "àfacturer"
With Sheets("Général").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x = 2 _
Else: x = .Item(2)(1).Row
End With
y = Sheets("Général").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Général").Range("a" & x & ":az" & y).Copy
Sheets("àFacturer").Range("b12").PasteSpecial
Paste:=xlValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 = "=R[-2]C*R[-1]C"
Application.ScreenUpdating = True
'masque les colonnes inutiles
Application.ScreenUpdating = False
For i = 4 To 53
If Cells(43, i) = "" Or Cells(43, i) = 0 Then Columns
(i).Hidden = True
Next
'envoie à l'impression la feuille "à Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1,
Collate:=True
Range("B11").Select
Application.ScreenUpdating = True
1000:
Range("b12").Select
End Sub


.



Avatar
Freedo
Bonjour hervé,
Ok si tu veux bien envoies le fichier

merci pour ton amabilité,
@+
Freedo
-----Message d'origine-----
re-.
je m'explique
j'ai un tableau avec en colonne a des N° de camions, et
en colonne b des

transporteurs
ce tableau comporte aussi des colis, poids et montants
facturés.

le but de la manoeuvre est d'effectuer un tri par camion
quelque soit le

transporteur, ensuite un tri par transporteur quelque
soit le camion a

fin d'afficher et d'imprimer le ca réalisé par camion
qqsoit le

transporteur, et le ca par transporteur qqsoit le camion.
j'ai donc repris la meme procédure d'enregistrement que
toi en ajoutant une

boucle pour passer en revue tous les camions et tous les
transporteurs.

la diff est que je dispose d"un champ reprenant tous les
n° des camions, et

d'un autre reprenant tous les noms des transporteurs.
le nb de camion est connu. j'extrais le n° du camion
dans ce champ puis

j'effectue mon tri. ne retenant que les valeurs > à 0
dans mon sous-total.

si tu veux je peux te fournir le fichier
bon courage
rv
"FReedo" a
écrit dans le

message de news:08c001c3a4fb$6ea7c0a0$
Bonjour Hervé,
Merci de suivre ce probleme;
en fait je n'imprime pas les feuilles du classeur mais
une

page générée par le résultat filtré d'un tableau de la
feuille "Général" à l'aide d'un bouton qui est dans la
feuille"àFacturer" et après impression je recommence avec
un nouveau filtre sur le même tableau de base et je
commande l'impression de cet autre résultat via le bouton
placé dans la feuille"àFacturer"
Peux-tu m'en dire plus?
Freedo
-----Message d'origine-----
Bonjour,
ci-joint un code qui devrait peut être t'aider.
j'ai un fichier dont je dois effectuer des impressions
filtrées en fonction

des colonnes 1 et 2

' IMPRESSION DES FEUILLES
For i = 5 To 15
Selection.AutoFilter Field:=1, Criteria1:Îlls(i,
18)

If Val(Cells(311, 2)) > 0 Then
ActiveWindow.SelectedSheets.PrintOut

Copies:=1, Collate:=True
Next i
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=1, Criteria1:="="
Selection.AutoFilter Field:=2, Criteria1:="<>"
For i = 5 To 12
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2, Criteria1:Îlls(i,
19)


If Val(Cells(311, 2)) > 0 Then
ActiveWindow.SelectedSheets.PrintOut

Copies:=1, Collate:=True
Next i

cells(311,2) est un sous.total de la colonne.
vàlà missieu. j'espère pouvoir t'aider
Hervé


"Freedo" a
écrit dans le

message de news:0aae01c3a470$ede7cdf0
$


Bonjour à toutes et à tous,
A priori c'est peut-être long comme explication mais
laissé à votre perspicacité je suppose qu'il n'y qua
rajouter quelques lignes pour mon problème.
Comment réaliser l'impression de feuilles filtrées
séparément.
Au départ j'ai un tableau de données dans la
feuille "Général"
En A2 la date, en B2 le n° de chantier exemple 03054 et
de C à AZ des prestations horaires.
Ma première opération manuelle est de filtrer la colonne
A depuis a2 suivant la plage dates ;
Jusque là tout est normal !
Ensuite sur base de ce tableau filtré, j'applique un Tri
sur la colonne B depuis B2 par n° chantier ;
Voilà à partir de ce tableau (filtré) et Trié j'aimerai
automatiser le filtre sur chaque n° de chantier
différent puis l'envoyer dans la feuille «
àFacturer » , appliquer tous les formatages et commande
d'impression séparées pour chaque chantier.
Au stade actuel, j'ai déjà toutes les macros pour
finaliser jusqu'à l'impression d'un chantier filtré.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrés) séparément
sur base de la plage filtrée par dates de la feuille «
Général » ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille « Général »
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'-----------------------------------
Private Sub CommandButton2_Click()
'TrierChantier
Selection.Sort Key1:=Range("b2"),
Order1:=xlAscending, Key2:=Range("a2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:úlse _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'======================== =================
2.Dans ma feuille "àFacturer"
Private Sub CommandButton1_Click()
'Sub VidelaSélection()
Application.ScreenUpdating = False
' Appelle la feuille "àFacturer" pour initialisation
Sheets("àFacturer").Select
' affiche toutes les colonnes qui ont été masquées
Range("d11:aZ11").Select
Selection.EntireColumn.Hidden = False
Range("b12").Select
' vide les cellules devant recevoir les nouveaux
encodages


'Rows("12:42").Select
Range("b12:aZ42").Select
Selection.Rows.Hidden = False
' Selection.Hidden = False
Selection.ClearContents
Range("b12").Select
Application.ScreenUpdating = True
' Appelle la feuille "Général" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Général").Select
Selection.AutoFilter Field:=2
ActiveSheet.Range("A2").Select
End Sub
'-------------------------------------------------------
Private Sub CommandButton4_Click()
'Sub àFacturer()
Application.ScreenUpdating = False
'affiche toutes les colonnes qui ont été masquées par la
facturation précédente
Application.ScreenUpdating = False
Sheets("àFacturer").Select
Columns("d:AZ").EntireColumn.AutoFit
' dimensionne les colonnes avec 9 points
Columns("d:az").Select
Selection.ColumnWidth = 9
Range("d12").Select
'Message test si une sélection filtrée est prête
rep = MsgBox("Avez-vous préparé la sélection à
Facturer ?


( Maximum 1 mois et 1 seul chantier )", 4)
If rep = 7 Then
GoTo 1000
End If
' vide les cellules devant recevoir les nouveaux
encodages


' Worksheets("àFacturer").Select
Range("b12:aZ42").Select
Selection.ClearContents
Range("b12").Select
'Recopie le tableau filtré vers la feuille "àfacturer"
With Sheets("Général").Range("a2:A65536").SpecialCells
(xlCellTypeVisible).Areas
If .Item(1).Rows.Count > 0 Then x = 2 _
Else: x = .Item(2)(1).Row
End With
y = Sheets("Général").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Général").Range("a" & x & ":az" & y).Copy
Sheets("àFacturer").Range("b12").PasteSpecial
Paste:=xlValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 0).Select
'sous-totaux par colonne
Range("d43:az43").FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'ajoute la tva sur le montant de la ligne 43
Range("d45:az45").FormulaR1C1 = "=R[-2]C*R[-1]C"
Application.ScreenUpdating = True
'masque les colonnes inutiles
Application.ScreenUpdating = False
For i = 4 To 53
If Cells(43, i) = "" Or Cells(43, i) = 0 Then Columns
(i).Hidden = True
Next
'envoie à l'impression la feuille "à Facturer"
Range("B12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1,
Collate:=True
Range("B11").Select
Application.ScreenUpdating = True
1000:
Range("b12").Select
End Sub


.




.