Définir Zone impression suivant valeur Combobox

Guigui

XLDnaute Occasionnel
Hello tous le monde,

J'ai plusieur feuille (mois) qui regroupe des plannings hebdomadaire.

En cliquant sur un bouton, On choisi, la semaine à imprimer ou le mois complet.

Ensuite je voudrais que la zone d'impression se regle en fonction de la valeur du combobox

Ex:
Si Semaine 17 séléctionné, la zone d'impression est A46;W65 (le tableau + le 'titre' )
Si un mois séléctionné, je voudrais tout imprimer.

Je me bat avec la valeur de PrintArea...

Merci d'avance
A+
Guillaume [file name=IMPRESSION_20060415203315.zip size=28202]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/IMPRESSION_20060415203315.zip[/file]
 

Pièces jointes

  • IMPRESSION_20060415203315.zip
    27.5 KB · Affichages: 22

Marc_du_78

XLDnaute Accro
Bonjour Guigui,
Je n'ai pas réussi à tout te faire, car mes connaissances sont insuffisantes. Mais peut-être trouveras-tu le moyen de poursuivre et d'arriver à tes fins.
Dans la négative, relance ce post et tu trouveras certainement quelqu'un pour faire ce dont je ne puis.
En te souhaitant un bon dimanche Pascal. [file name=ImpressionSelon.zip size=38758]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ImpressionSelon.zip[/file]
 

Pièces jointes

  • ImpressionSelon.zip
    37.8 KB · Affichages: 16

Marc_du_78

XLDnaute Accro
Avec mes excuses Guigui, une erreur dans mon fichier que je viens de voir et rectifier.
Mais je ne suis toujours pas arrivé à te satisfaire complétement. [file name=ImpressionSelon2.zip size=41186]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ImpressionSelon2.zip[/file]
 

Pièces jointes

  • ImpressionSelon2.zip
    40.2 KB · Affichages: 19

Guigui

XLDnaute Occasionnel
Hello le forum, Marc_du_78,

Merci marc pour ton approche.
En faite, j'avais déja fais un 'code' mais il y avait des problemes car defois, mes zones à selectionner seront plus petite ou plus grande, donc mon intention était de ne pas marquer des range fixe mais plutot quelquechose avec un point de départ fixe (2 cellule au dessus de la semaine trouvé avec Find et ensuite bah une extension qui se cale toute seul au tableau....

Je viens de penser à quelque chose, si je met des bornes de limite à mes tableaux ? :

ex: je met un 'z' dans le coin superieur gauche de ma zone et un 'w' dans le coin inferieur droit. et ensuite je demande que ma zone d'impression soit la range compris entre 'z' et 'w' ...
...
lol c'est clair dans ma tete .. mais bon.

Merci comme meme .

A+
Guillaume [file name=IMPRESSION_20060416121551.zip size=32666]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/IMPRESSION_20060416121551.zip[/file]
 

Pièces jointes

  • IMPRESSION_20060416121551.zip
    31.9 KB · Affichages: 18

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Guigui, Marc, le Forum

Pendant un moment j'ai cru avoir la berlue en voyant le même fichier que je venais de Traîter pour Marc dans ce Fil Lien supprimé

Bon, sinon, pour ton cas spécifique Guigui, je propse d'utiliser des Tag 'AreaStart' et 'AreaEnd' dans des Commentaires, ce sera plus propre que des 'z' et des 'w'...

Regarde le fichier joint, si tu ne mets pas de 'Tag Comment', le programme définira, lui-même la zone d'impression...

Bonnes Pâques
[ol]@+Thierry[/ol]

EDITION § 'Avé' le Fichier c'est mieux ;) [file name=XLD_CombBox_PrintArea_Per_Comments.zip size=24669]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/XLD_CombBox_PrintArea_Per_Comments.zip[/file]

Message édité par: _Thierry, à: 16/04/2006 13:12
 

Pièces jointes

  • XLD_CombBox_PrintArea_Per_Comments.zip
    24.1 KB · Affichages: 36

Guigui

XLDnaute Occasionnel
re tous le monde, marc_du_78, _Thierry,

Merci beaucoup pour ton aide _Thierry.
Par contre je voudrais avoir dans ma zone d'impression la semaine encour.
Je deplace donc la AreaStart 2 case plus haut, mais ca ne change rien...

tu dis que si ya pas de tagcomment il fait tous seul la range ? pourquoi en mettre alors ?

merci encore
A+
guillaume
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour Guigui, Marc

No Souc Marc ;) Reposes-toi !

Pour Guigui, je n'avais pas saisi cette problématique avec tes 'z' et tes 'w' !!! Et le fichier je pensais que c'était celui de Marc de l'autre Fil, c'est la bazar quand on est attaqué sur tous les fronts !!! lol


Bon Essaie ceci :


Sub CmdImpHeb_Click()
Dim WS As Worksheet
Dim WeekRange As Range
Dim Cell As Range, Cel As Range, CelStart As Range, CelEnd As Range
Dim WeekPrintArea As Range
Dim WeekSearch As String


WeekSearch = Me.Semaine

If WeekSearch = '' Then Exit Sub

For Each WS In ThisWorkbook.Worksheets
   
Set WeekRange = WS.Range('A1:A100')
       
For Each Cell In WeekRange
           
If Cell.Text = WeekSearch Then
           
                Unload Me
               
               
For Each Cel In Cell.CurrentRegion
                   
With Cel
                       
If Not .Comment Is Nothing Then
                           
If Not InStr(.Comment.Text, 'AreaStart') = 0 Then Set CelStart = Cel
                           
If Not InStr(.Comment.Text, 'AreaEnd') = 0 Then Set CelEnd = Cel
                       
End If
                   
End With
               
Next
               
               
If Not CelStart Is Nothing And Not CelEnd Is Nothing Then
                   
Set WeekPrintArea = Range(CelStart.Offset(-2, 0), CelEnd)
               
Else
                   
Set WeekPrintArea = Range(Cell.Offset(-2, 0), Cell.Offset(18, 22))
               
End If
               
                   
With WS
                        .Activate
                        .PageSetup.PrintArea = WeekPrintArea.Address
                        .PrintPreview
'Pour tester sans gaspillage
                       
'.PrintOut 'Pour Imprimer sur activePrinter
                   
End With
           
End If
       
Next Cell
Next WS
 
End Sub



Ou bien Peut-être celle-ci, qui n'a pas besoin de Tag Comment et 'S'autoSize' toute seule en fonction des cellules remplies ou non...


Sub CmdImpHeb_Click()
Dim WS As Worksheet
Dim WeekRange As Range
Dim Cell As Range, Cel As Range, CelStart As Range, CelEnd As Range
Dim WeekPrintArea As Range
Dim WeekSearch As String
Dim CellCurrentRegion As Range
Dim Col As Byte, Lig As Integer

WeekSearch = Me.Semaine

If WeekSearch = '' Then Exit Sub

For Each WS In ThisWorkbook.Worksheets
   
Set WeekRange = WS.Range('A1:A100')
       
For Each Cell In WeekRange
           
If Cell.Text = WeekSearch Then
           
                Unload Me
               
               
Set CelStart = Cell.Offset(-2, 0)
               
Set CellCurrentRegion = Cell.CurrentRegion
                    Lig = CellCurrentRegion.Rows.Count + Cell.Row - 1
                    Col = CellCurrentRegion.Columns.Count + Cell.Column - 1
                    Col = IIf(Col < 14, 14, Col)
                       
Set CelEnd = WS.Cells(Lig, Col)
               
               
                       
If Not CelStart Is Nothing And Not CelEnd Is Nothing Then
                           
Set WeekPrintArea = Range(CelStart, CelEnd)
                       
Else
                           
Set WeekPrintArea = Range(CelStart, Cell.Offset(18, 22))
                       
End If
               
                       
With WS
                            .Activate
                            .PageSetup.PrintArea = WeekPrintArea.Address
                            .PrintPreview
'Pour tester sans gaspillage
                           
'.PrintOut 'Pour Imprimer sur activePrinter
                       
End With
           
End If
       
Next Cell
Next WS
 
End Sub


Bon Dimanche
[ol]@+Thierry[/ol]
 

Guigui

XLDnaute Occasionnel
hello tous le monde, _thierry, Marc_du_78,

Merci thierry pour ton code, je pense utiliser le 2eme, sans tagcomment.
Par contre je souhaiterais exclure des feuilles dans le
For Each WS In ThisWorkbook.Worksheets
car le contenu de Me.semaine existe dans d'autre feuille que les 'MOIS' et là, le prog bug un peu sur : For Each Cel In Cell.CurrentRegion

je pensais à un truc du genre :
If WS.name = 'HC' or WS.name = 'MAJ' then
else
'et la suite
mais ca bug avec un next sans for ...

Peux tu me trouvé une solution ?

Merci encore.
A+
Guillaume
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Guigui, Marc, le Forum

Bon, voilà comment Proceder sur une Macro de Base :

Sub Liste_Excusive_De_Feuilles()
Dim WS As Worksheet
Dim WSName As String

For Each WS In ThisWorkbook.Worksheets
   
If Not WS.Name = 'HC' And Not WS.Name = 'MAJ' Then
        WSName = WSName & vbTab & WS.Name & vbCrLf
   
End If
Next WS
 
MsgBox 'Voici la Liste Des Feuilles qui ne sont ni ''HS'' et ni ''MAJ''' & vbCrLf & WSName
 
End Sub


Mise en place dans ton Code (le second ci-dessus)


Sub CmdImpHeb_Click()
Dim WS As Worksheet
Dim WeekRange As Range
Dim Cell As Range, Cel As Range, CelStart As Range, CelEnd As Range
Dim WeekPrintArea As Range
Dim WeekSearch As String
Dim CellCurrentRegion As Range
Dim Col As Byte, Lig As Integer

WeekSearch = Me.Semaine

If WeekSearch = '' Then Exit Sub

For Each WS In ThisWorkbook.Worksheets
   
If Not WS.Name = 'HC' And Not WS.Name = 'MAJ' Then
        MsgBox 'Traitement : ' & WS.Name
'**** TEST A SUPPRIMER ENSUITE !
       
Set WeekRange = WS.Range('A1:A100')
           
For Each Cell In WeekRange
               
If Cell.Text = WeekSearch Then
                    Unload Me
                   
Set CelStart = Cell.Offset(-2, 0)
                   
Set CellCurrentRegion = Cell.CurrentRegion
                        Lig = CellCurrentRegion.Rows.Count + Cell.Row - 1
                        Col = CellCurrentRegion.Columns.Count + Cell.Column - 1
                        Col = IIf(Col < 14, 14, Col)
                           
Set CelEnd = WS.Cells(Lig, Col)


                           
If Not CelStart Is Nothing And Not CelEnd Is Nothing Then
                               
Set WeekPrintArea = Range(CelStart, CelEnd)
                           
Else
                               
Set WeekPrintArea = Range(CelStart, Cell.Offset(18, 22))
                           
End If

                           
With WS
                                .Activate
                                .PageSetup.PrintArea = WeekPrintArea.Address
                                .PrintPreview
'**** Pour tester sans gaspillage
                               
'.PrintOut 'Pour Imprimer sur activePrinter
                           
End With
               
End If
           
Next Cell
   
End If
Next WS
 
End Sub


Bon Lundi de Pâques
[ol]@+Thierry[/ol]
 

Statistiques des forums

Discussions
312 345
Messages
2 087 453
Membres
103 546
dernier inscrit
mohamed tano