impression multiple de plage filtrée

Le
Freedo
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 problme.
Comment raliser l'impression de feuilles filtres
sparment.
Au dpart j'ai un tableau de donnes dans la
feuille "Gnral"
En A2 la date, en B2 le n de chantier exemple 03054 et
de C AZ des prestations horaires.
Ma premire opration 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
diffrent puis l'envoyer dans la feuille
Facturer , appliquer tous les formatages et commande
d'impression spares pour chaque chantier.
Au stade actuel, j'ai dj toutes les macros pour
finaliser jusqu' l'impression d'un chantier filtr.
Ma question principale est comment imprimer
automatiquement tous les chantiers (filtrs) sparment
sur base de la plage filtre par dates de la feuille
Gnral ?
Merci de suivre
Freedo
Les macros (issues du NG)que j'utilise actuellement :
1.Dans ma feuille Gnral
Private Sub CommandButton1_Click()
'TrierDate
Selection.Sort Key1:=Range("A2"),
Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlYes,
OrderCustom:=1, MatchCase:=False _
, 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:=False _
, Orientation:=xlTopToBottom
Range("A2").Select
End Sub
'=
==
2.Dans ma feuille "Facturer"
Private Sub CommandButton1_Click()
'Sub VidelaSlection()
Application.ScreenUpdating = False
' Appelle la feuille "Facturer" pour initialisation
Sheets("Facturer").Select
' affiche toutes les colonnes qui ont t masques
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 "Gnral" et applique le
filtre "Tous" sur la colonne "Chantier"
Sheets("Gnral").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 masques par la
facturation prcdente
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 slection filtre est prte
rep = MsgBox("Avez-vous prpar la slection 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("Gnral").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("Gnral").Cells.SpecialCells
(xlCellTypeLastCell).Row
Sheets("Gnral").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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Denis Michon
Le #264415
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" 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
Oleane
Le #264306
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" 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
Freedo
Le #265701
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" é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


.



FReedo
Le #265699
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" é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


.



Denis Michon
Le #266203
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" 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" é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


.



Oleane
Le #266041
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" 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" é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


.



Freedo
Le #266948
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" é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" é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


.




.




Publicité
Poster une réponse
Anonyme