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

Imprimer 2 plages différentes d'une même feuille

7 réponses
Avatar
michir
Bonjour, Je souhaiterais imprimer deux plage diff=E9rentes d'une m=EAme
feuille, avec une macro pour chacune
J'utilise cette macro pour une plage, mais elle ne prend pas en compte
la plage sp=E9cifi=E9e, mais la zone d'impression de la derni=E8re
impression demand=E9e:

Sub Imprimer_suppr_Lv2()
Application.ScreenUpdating =3D False
For r =3D ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden =3D True
Next r
With ActiveSheet.PageSetup.PrintArea =3D "$J$1:$P$135"
Selection.EntireRow.Hidden =3D True
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=3D1, Collate:=3DTrue,
_
IgnorePrintAreas:=3DFalse
Rows().Hidden =3D False
End Sub

Comment obliger la macro =E0 imprimer la plage indiqu=E9e ?
Merci =E0 tous

7 réponses

Avatar
isabelle
bonjour Michel,

Sub ImprimeMaPlage()
'Mettre Preview:úlse pour une vrai impression
Range("$J$1:$P$135").PrintOut Copies:=1, Preview:=True, Collate:=True
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-30 13:03, michir a écrit :
Bonjour, Je souhaiterais imprimer deux plage différentes d'une même
feuille, avec une macro pour chacune
J'utilise cette macro pour une plage, mais elle ne prend pas en compte
la plage spécifiée, mais la zone d'impression de la dernière
impression demandée:

Sub Imprimer_suppr_Lv2()
Application.ScreenUpdating = False
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
Next r
With ActiveSheet.PageSetup.PrintArea = "$J$1:$P$135"
Selection.EntireRow.Hidden = True
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True,
_
IgnorePrintAreas:úlse
Rows().Hidden = False
End Sub

Comment obliger la macro à imprimer la plage indiquée ?
Merci à tous

Avatar
MichD
Bonjour,

Une autre façon de faire :

'----------------------------------------
Sub Imprimer_suppr_Lv2()
Dim Arr(), X As String

'Liste tes plages discontinues à imprimer
Arr = Array("$J$1:$P$135", "R1:Z100")

Application.ScreenUpdating = False

With Feuil1 ' ActiveSheet
'Pour masquer toutes les lignes dont les cellules de
'la colonne B:B sont totalement vides
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

'Impression de chaque plage de cellules définie
For Each elt In Arr
.PageSetup.PrintArea = elt
.PrintPreview 'tu utilise .Printout si ton test est concluant
.PageSetup.PrintArea = ""
Next
'Pour afficher les lignes à la fin de l'impression
.Range("B:B").EntireRow.Hidden = False
End With
End Sub
'----------------------------------------



MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Bonjour, Je souhaiterais imprimer deux plage différentes d'une même
feuille, avec une macro pour chacune
J'utilise cette macro pour une plage, mais elle ne prend pas en compte
la plage spécifiée, mais la zone d'impression de la dernière
impression demandée:

Sub Imprimer_suppr_Lv2()
Application.ScreenUpdating = False
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
Next r
With ActiveSheet.PageSetup.PrintArea = "$J$1:$P$135"
Selection.EntireRow.Hidden = True
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True,
_
IgnorePrintAreas:úlse
Rows().Hidden = False
End Sub

Comment obliger la macro à imprimer la plage indiquée ?
Merci à tous
Avatar
michir
Bonjour,
Merci à Isabelle et MichD
Je préfère joindre mon fichier Ci-joint

J'ai deux questions:
. pourquoi le masquage des lignes à l'impression ne fonctionne plus ?
. pourquoi la macro imprime 2 exemplaires systématiquement ?
Lien:
http://cjoint.com/?0dFjSchyPBW
Merci
Michel


Sub Imprimer_suppr_Lv3()
Dim Arr(), X As String
'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "$B$1:$I$135")
Application.ScreenUpdating = False
With Feuil1 ' ActiveSheet
'Pour masquer toutes les lignes dont les cellules de
'la colonne B:B sont totalement vides
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Impression de chaque plage de cellules d finie
For Each elt In Arr
.PageSetup.PrintArea = elt
.PrintPreview 'tu utilise .Printout si ton test est concluant
.PageSetup.PrintArea = ""
Next
'Pour afficher les lignes la fin de l'impression
.Range("B:B").EntireRow.Hidden = False
End With
Range("$J$1:$P$135").PrintOut Copies:=1, Preview:=True, Collate:=True
End Sub
On 30 mar, 19:52, "MichD" wrote:
Bonjour,

Une autre fa on de faire :

'----------------------------------------
Sub Imprimer_suppr_Lv2()
Dim Arr(), X As String

'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "R1:Z100")

Application.ScreenUpdating = False

With Feuil1 ' ActiveSheet
    'Pour masquer toutes les lignes dont les cellules de
    'la colonne B:B sont totalement vides
    .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
        SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

    'Impression de chaque plage de cellules d finie
    For Each elt In Arr
        .PageSetup.PrintArea = elt
        .PrintPreview 'tu utilise .Printout si ton test est concl uant
        .PageSetup.PrintArea = ""
    Next
    'Pour afficher les lignes la fin de l'impression
    .Range("B:B").EntireRow.Hidden = False
End With
End Sub
'----------------------------------------

MichD
--------------------------------------------
"michir"  a crit dans le message de groupe de discussion :


Bonjour, Je souhaiterais imprimer deux plage diff rentes d'une m me
feuille, avec une macro pour chacune
J'utilise cette macro pour une plage, mais elle ne prend pas en compte
la plage sp cifi e, mais la zone d'impression de la derni re
impression demand e:

Sub Imprimer_suppr_Lv2()
Application.ScreenUpdating = False
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
  If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
Next r
    With ActiveSheet.PageSetup.PrintArea = "$J$1:$P$135"
            Selection.EntireRow.Hidden = True
    End With
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate :=True,
_
        IgnorePrintAreas:úlse
Rows().Hidden = False
End Sub

Comment obliger la macro imprimer la plage indiqu e ?
Merci tous
Avatar
MichD
Cette procédure fonctionne très bien.

Elle masque toutes les lignes dont les cellules de la colonne B:B sont totalement vides.
Elle imprime 2 fois la même plage de cellules que tu as définies dans la procédure :
Arr = Array("$J$1:$P$135", "$J$1:$P$135")

Que veux-tu de plus ?

'-------------------------------------------------
Sub Imprimer_suppr_Lv4()
Dim Arr(), X As String
'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "$J$1:$P$135")
'Application.ScreenUpdating = False
With Feuil1 ' ActiveSheet
'Pour masquer toutes les lignes dont les cellules de
'la colonne B:B sont totalement vides
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Impression de chaque plage de cellules d finie
For Each elt In Arr
.PageSetup.PrintArea = elt
.PrintPreview 'tu utilise .Printout si ton test est concluant
.PageSetup.PrintArea = ""
Next
'Pour afficher les lignes la fin de l'impression
.Range("B:B").EntireRow.Hidden = False
End With

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



MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Bonjour,
Merci à Isabelle et MichD
Je préfère joindre mon fichier Ci-joint

J'ai deux questions:
. pourquoi le masquage des lignes à l'impression ne fonctionne plus ?
. pourquoi la macro imprime 2 exemplaires systématiquement ?
Lien:
http://cjoint.com/?0dFjSchyPBW
Merci
Michel


Sub Imprimer_suppr_Lv3()
Dim Arr(), X As String
'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "$B$1:$I$135")
Application.ScreenUpdating = False
With Feuil1 ' ActiveSheet
'Pour masquer toutes les lignes dont les cellules de
'la colonne B:B sont totalement vides
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Impression de chaque plage de cellules d finie
For Each elt In Arr
.PageSetup.PrintArea = elt
.PrintPreview 'tu utilise .Printout si ton test est concluant
.PageSetup.PrintArea = ""
Next
'Pour afficher les lignes la fin de l'impression
.Range("B:B").EntireRow.Hidden = False
End With
Range("$J$1:$P$135").PrintOut Copies:=1, Preview:=True, Collate:=True
End Sub
On 30 mar, 19:52, "MichD" wrote:
Bonjour,

Une autre fa on de faire :

'----------------------------------------
Sub Imprimer_suppr_Lv2()
Dim Arr(), X As String

'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "R1:Z100")

Application.ScreenUpdating = False

With Feuil1 ' ActiveSheet
'Pour masquer toutes les lignes dont les cellules de
'la colonne B:B sont totalement vides
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

'Impression de chaque plage de cellules d finie
For Each elt In Arr
.PageSetup.PrintArea = elt
.PrintPreview 'tu utilise .Printout si ton test est concluant
.PageSetup.PrintArea = ""
Next
'Pour afficher les lignes la fin de l'impression
.Range("B:B").EntireRow.Hidden = False
End With
End Sub
'----------------------------------------

MichD
--------------------------------------------
"michir" a crit dans le message de groupe de discussion :


Bonjour, Je souhaiterais imprimer deux plage diff rentes d'une m me
feuille, avec une macro pour chacune
J'utilise cette macro pour une plage, mais elle ne prend pas en compte
la plage sp cifi e, mais la zone d'impression de la derni re
impression demand e:

Sub Imprimer_suppr_Lv2()
Application.ScreenUpdating = False
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
Next r
With ActiveSheet.PageSetup.PrintArea = "$J$1:$P$135"
Selection.EntireRow.Hidden = True
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True,
_
IgnorePrintAreas:úlse
Rows().Hidden = False
End Sub

Comment obliger la macro imprimer la plage indiqu e ?
Merci tous
Avatar
michir
Re, Oui, merci MichD

Ma question est relative au non masquage des lignes vides malgré
l'instruction :
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Dans une macro précédente tu avais utilisé l'instruction suivante qui
fonctionnait bien:
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
Next r

Je ne suis pas très doué et je ne comprends pas pourquoi ton
instruction avec Range ne fonctionne pas chez moi ?
Merci à toi
Michel

On 31 mar, 13:08, "MichD" wrote:
Cette procédure fonctionne très bien.

Elle masque toutes les lignes dont les cellules de la colonne B:B sont to talement vides.
Elle imprime 2 fois la même plage de cellules que tu as définies dans la procédure :
Arr = Array("$J$1:$P$135", "$J$1:$P$135")

Que veux-tu de plus ?

'-------------------------------------------------
Sub Imprimer_suppr_Lv4()
Dim Arr(), X As String
'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "$J$1:$P$135")
'Application.ScreenUpdating = False
With Feuil1 ' ActiveSheet
    'Pour masquer toutes les lignes dont les cellules de
    'la colonne B:B sont totalement vides
    .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
        SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
    'Impression de chaque plage de cellules d finie
    For Each elt In Arr
        .PageSetup.PrintArea = elt
        .PrintPreview 'tu utilise .Printout si ton test est concl uant
        .PageSetup.PrintArea = ""
    Next
    'Pour afficher les lignes la fin de l'impression
    .Range("B:B").EntireRow.Hidden = False
End With

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

MichD
--------------------------------------------
"michir"  a écrit dans le message de groupe de discussion :


Bonjour,
Merci à Isabelle et MichD
Je préfère joindre mon fichier Ci-joint

J'ai deux questions:
. pourquoi le masquage des lignes à l'impression ne fonctionne plus   ?
. pourquoi la macro imprime 2 exemplaires systématiquement ?
Lien:http://cjoint.com/?0dFjSchyPBW
Merci
Michel

Sub Imprimer_suppr_Lv3()
Dim Arr(), X As String
'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "$B$1:$I$135")
Application.ScreenUpdating = False
With Feuil1 ' ActiveSheet
    'Pour masquer toutes les lignes dont les cellules de
    'la colonne B:B sont totalement vides
    .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
        SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
    'Impression de chaque plage de cellules d finie
    For Each elt In Arr
        .PageSetup.PrintArea = elt
        .PrintPreview 'tu utilise .Printout si ton test est concl uant
        .PageSetup.PrintArea = ""
    Next
    'Pour afficher les lignes la fin de l'impression
    .Range("B:B").EntireRow.Hidden = False
End With
Range("$J$1:$P$135").PrintOut Copies:=1, Preview:=True, Collate:=Tr ue
End Sub
On 30 mar, 19:52, "MichD" wrote:







> Bonjour,

> Une autre fa on de faire :

> '----------------------------------------
> Sub Imprimer_suppr_Lv2()
> Dim Arr(), X As String

> 'Liste tes plages discontinues imprimer
> Arr = Array("$J$1:$P$135", "R1:Z100")

> Application.ScreenUpdating = False

> With Feuil1 ' ActiveSheet
>     'Pour masquer toutes les lignes dont les cellules de
>     'la colonne B:B sont totalement vides
>     .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
>         SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = Tru e

>     'Impression de chaque plage de cellules d finie
>     For Each elt In Arr
>         .PageSetup.PrintArea = elt
>         .PrintPreview 'tu utilise .Printout si ton test est con cluant
>         .PageSetup.PrintArea = ""
>     Next
>     'Pour afficher les lignes la fin de l'impression
>     .Range("B:B").EntireRow.Hidden = False
> End With
> End Sub
> '----------------------------------------

> MichD
> --------------------------------------------
> "michir"  a crit dans le message de groupe de discussion :
>

> Bonjour, Je souhaiterais imprimer deux plage diff rentes d'une m me
> feuille, avec une macro pour chacune
> J'utilise cette macro pour une plage, mais elle ne prend pas en compte
> la plage sp cifi e, mais la zone d'impression de la derni re
> impression demand e:

> Sub Imprimer_suppr_Lv2()
> Application.ScreenUpdating = False
> For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
>   If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
> Next r
>     With ActiveSheet.PageSetup.PrintArea = "$J$1:$P$135"
>             Selection.EntireRow.Hidden = True
>     End With
>         ActiveWindow.SelectedSheets.PrintOut Copies:=1, Colla te:=True,
> _
>         IgnorePrintAreas:úlse
> Rows().Hidden = False
> End Sub

> Comment obliger la macro imprimer la plage indiqu e ?
> Merci tous
Avatar
MichD
| .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
| SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Dans ta question, tu parles de cellules "VIDES" et la ligne de code qui précède
fait le travail. Tu devras ajouter juste avant "On error resume next" au cas où
il n'y pas de cellules vides, la méthode specialcells retourne une erreur et c'est normal.

Si tu préfères employer la boucle, c'est ton choix!

2 approches pour le prix d'une !



MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Re, Oui, merci MichD

Ma question est relative au non masquage des lignes vides malgré
l'instruction :
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Dans une macro précédente tu avais utilisé l'instruction suivante qui
fonctionnait bien:
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
Next r

Je ne suis pas très doué et je ne comprends pas pourquoi ton
instruction avec Range ne fonctionne pas chez moi ?
Merci à toi
Michel

On 31 mar, 13:08, "MichD" wrote:
Cette procédure fonctionne très bien.

Elle masque toutes les lignes dont les cellules de la colonne B:B sont totalement vides.
Elle imprime 2 fois la même plage de cellules que tu as définies dans la procédure :
Arr = Array("$J$1:$P$135", "$J$1:$P$135")

Que veux-tu de plus ?

'-------------------------------------------------
Sub Imprimer_suppr_Lv4()
Dim Arr(), X As String
'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "$J$1:$P$135")
'Application.ScreenUpdating = False
With Feuil1 ' ActiveSheet
'Pour masquer toutes les lignes dont les cellules de
'la colonne B:B sont totalement vides
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Impression de chaque plage de cellules d finie
For Each elt In Arr
.PageSetup.PrintArea = elt
.PrintPreview 'tu utilise .Printout si ton test est concluant
.PageSetup.PrintArea = ""
Next
'Pour afficher les lignes la fin de l'impression
.Range("B:B").EntireRow.Hidden = False
End With

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

MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Bonjour,
Merci à Isabelle et MichD
Je préfère joindre mon fichier Ci-joint

J'ai deux questions:
. pourquoi le masquage des lignes à l'impression ne fonctionne plus ?
. pourquoi la macro imprime 2 exemplaires systématiquement ?
Lien:http://cjoint.com/?0dFjSchyPBW
Merci
Michel

Sub Imprimer_suppr_Lv3()
Dim Arr(), X As String
'Liste tes plages discontinues imprimer
Arr = Array("$J$1:$P$135", "$B$1:$I$135")
Application.ScreenUpdating = False
With Feuil1 ' ActiveSheet
'Pour masquer toutes les lignes dont les cellules de
'la colonne B:B sont totalement vides
.Range("B1:B" & .Range("B65536").End(xlUp).Row). _
SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Impression de chaque plage de cellules d finie
For Each elt In Arr
.PageSetup.PrintArea = elt
.PrintPreview 'tu utilise .Printout si ton test est concluant
.PageSetup.PrintArea = ""
Next
'Pour afficher les lignes la fin de l'impression
.Range("B:B").EntireRow.Hidden = False
End With
Range("$J$1:$P$135").PrintOut Copies:=1, Preview:=True, Collate:=True
End Sub
On 30 mar, 19:52, "MichD" wrote:







> Bonjour,

> Une autre fa on de faire :

> '----------------------------------------
> Sub Imprimer_suppr_Lv2()
> Dim Arr(), X As String

> 'Liste tes plages discontinues imprimer
> Arr = Array("$J$1:$P$135", "R1:Z100")

> Application.ScreenUpdating = False

> With Feuil1 ' ActiveSheet
> 'Pour masquer toutes les lignes dont les cellules de
> 'la colonne B:B sont totalement vides
> .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
> SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

> 'Impression de chaque plage de cellules d finie
> For Each elt In Arr
> .PageSetup.PrintArea = elt
> .PrintPreview 'tu utilise .Printout si ton test est concluant
> .PageSetup.PrintArea = ""
> Next
> 'Pour afficher les lignes la fin de l'impression
> .Range("B:B").EntireRow.Hidden = False
> End With
> End Sub
> '----------------------------------------

> MichD
> --------------------------------------------
> "michir" a crit dans le message de groupe de discussion :
>

> Bonjour, Je souhaiterais imprimer deux plage diff rentes d'une m me
> feuille, avec une macro pour chacune
> J'utilise cette macro pour une plage, mais elle ne prend pas en compte
> la plage sp cifi e, mais la zone d'impression de la derni re
> impression demand e:

> Sub Imprimer_suppr_Lv2()
> Application.ScreenUpdating = False
> For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
> If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
> Next r
> With ActiveSheet.PageSetup.PrintArea = "$J$1:$P$135"
> Selection.EntireRow.Hidden = True
> End With
> ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True,
> _
> IgnorePrintAreas:úlse
> Rows().Hidden = False
> End Sub

> Comment obliger la macro imprimer la plage indiqu e ?
> Merci tous
Avatar
michir
Ok, Merci MichD, cela fonctionne parfaitement
Michel

On 31 mar, 15:03, "MichD" wrote:
| .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
|        SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Dans ta question, tu parles de cellules "VIDES" et la ligne de code qui p récède
fait le travail. Tu devras ajouter juste avant "On error resume next" au cas où
il n'y pas de cellules vides, la méthode specialcells retourne une erre ur et c'est normal.

Si tu préfères employer la boucle, c'est ton choix!

2 approches pour le prix d'une !

MichD
--------------------------------------------
"michir"  a écrit dans le message de groupe de discussion :


Re, Oui, merci MichD

Ma question est relative au non masquage des lignes vides malgré
l'instruction :
    .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
        SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Dans une macro précédente tu avais utilisé l'instruction suivante q ui
fonctionnait bien:
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
  If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
Next r

Je ne suis pas très doué et je ne comprends pas pourquoi ton
instruction avec Range ne fonctionne pas chez moi ?
Merci à toi
Michel

On 31 mar, 13:08, "MichD" wrote:







> Cette procédure fonctionne très bien.

> Elle masque toutes les lignes dont les cellules de la colonne B:B sont totalement vides.
> Elle imprime 2 fois la même plage de cellules que tu as définies da ns la procédure :
> Arr = Array("$J$1:$P$135", "$J$1:$P$135")

> Que veux-tu de plus ?

> '-------------------------------------------------
> Sub Imprimer_suppr_Lv4()
> Dim Arr(), X As String
> 'Liste tes plages discontinues imprimer
> Arr = Array("$J$1:$P$135", "$J$1:$P$135")
> 'Application.ScreenUpdating = False
> With Feuil1 ' ActiveSheet
>     'Pour masquer toutes les lignes dont les cellules de
>     'la colonne B:B sont totalement vides
>     .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
>         SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = Tru e
>     'Impression de chaque plage de cellules d finie
>     For Each elt In Arr
>         .PageSetup.PrintArea = elt
>         .PrintPreview 'tu utilise .Printout si ton test est con cluant
>         .PageSetup.PrintArea = ""
>     Next
>     'Pour afficher les lignes la fin de l'impression
>     .Range("B:B").EntireRow.Hidden = False
> End With

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

> MichD
> --------------------------------------------
> "michir"  a écrit dans le message de groupe de discussion :
>

> Bonjour,
> Merci à Isabelle et MichD
> Je préfère joindre mon fichier Ci-joint

> J'ai deux questions:
> . pourquoi le masquage des lignes à l'impression ne fonctionne plus  ?
> . pourquoi la macro imprime 2 exemplaires systématiquement ?
> Lien:http://cjoint.com/?0dFjSchyPBW
> Merci
> Michel

> Sub Imprimer_suppr_Lv3()
> Dim Arr(), X As String
> 'Liste tes plages discontinues imprimer
> Arr = Array("$J$1:$P$135", "$B$1:$I$135")
> Application.ScreenUpdating = False
> With Feuil1 ' ActiveSheet
>     'Pour masquer toutes les lignes dont les cellules de
>     'la colonne B:B sont totalement vides
>     .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
>         SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = Tru e
>     'Impression de chaque plage de cellules d finie
>     For Each elt In Arr
>         .PageSetup.PrintArea = elt
>         .PrintPreview 'tu utilise .Printout si ton test est con cluant
>         .PageSetup.PrintArea = ""
>     Next
>     'Pour afficher les lignes la fin de l'impression
>     .Range("B:B").EntireRow.Hidden = False
> End With
> Range("$J$1:$P$135").PrintOut Copies:=1, Preview:=True, Collate:= True
> End Sub
> On 30 mar, 19:52, "MichD" wrote:

> > Bonjour,

> > Une autre fa on de faire :

> > '----------------------------------------
> > Sub Imprimer_suppr_Lv2()
> > Dim Arr(), X As String

> > 'Liste tes plages discontinues imprimer
> > Arr = Array("$J$1:$P$135", "R1:Z100")

> > Application.ScreenUpdating = False

> > With Feuil1 ' ActiveSheet
> >     'Pour masquer toutes les lignes dont les cellules de
> >     'la colonne B:B sont totalement vides
> >     .Range("B1:B" & .Range("B65536").End(xlUp).Row). _
> >         SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = T rue

> >     'Impression de chaque plage de cellules d finie
> >     For Each elt In Arr
> >         .PageSetup.PrintArea = elt
> >         .PrintPreview 'tu utilise .Printout si ton test est c oncluant
> >         .PageSetup.PrintArea = ""
> >     Next
> >     'Pour afficher les lignes la fin de l'impression
> >     .Range("B:B").EntireRow.Hidden = False
> > End With
> > End Sub
> > '----------------------------------------

> > MichD
> > --------------------------------------------
> > "michir"  a crit dans le message de groupe de discussion :
> >

> > Bonjour, Je souhaiterais imprimer deux plage diff rentes d'une m me
> > feuille, avec une macro pour chacune
> > J'utilise cette macro pour une plage, mais elle ne prend pas en compt e
> > la plage sp cifi e, mais la zone d'impression de la derni re
> > impression demand e:

> > Sub Imprimer_suppr_Lv2()
> > Application.ScreenUpdating = False
> > For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
> >   If IsEmpty(Cells(r, "B")) Then Rows(r).Hidden = True
> > Next r
> >     With ActiveSheet.PageSetup.PrintArea = "$J$1:$P$135"
> >             Selection.EntireRow.Hidden = True
> >     End With
> >         ActiveWindow.SelectedSheets.PrintOut Copies:=1, Col late:=True,
> > _
> >         IgnorePrintAreas:úlse
> > Rows().Hidden = False
> > End Sub

> > Comment obliger la macro imprimer la plage indiqu e ?
> > Merci tous