Grouper les feuilles visible pour impression

fredh

XLDnaute Occasionnel
Bonsoir a tous

voila j'aimerai pouvoir selectionner toutes les feuille visible et les regrouper pour les imprimez toutes.....

J'avais fait un code VBA qui selectionner les feuilles par leur noms mais maintenat j'ai des feuilles avec des noms aleatoire alors mon code ne marche plus.
j'ai commencer sur un autre code mais je bloque sur la sauvegarde des noms des feuille et sur sheets array
Code:
Private Sub CommandButton3_Click()
Dim feuille As String
For Each sh In Sheets
    If sh.Visible = True Then
        sh.Select
        feuille = feuille + ActiveSheet.Name
    End If
Next sh
MsgBox feuille
Sheets(Array(feuille)).Select
sheets(1).activate
End Sub

Si quelqu'un peut me guider pour resoudre ce probleme, ca serait cool

Merci et @+
 

Omicron

XLDnaute Junior
Re : Grouper les feuilles visible pour impression

Bonjour Fredh,

Pourquoi pas tout simplement :

Private Sub CommandButton1_Click()
For Each sh In Sheets
If sh.Visible Then sh.PrintOut
Next sh
End Sub

A moins que ne n'ai mal compris le problème, cela marche ....

Cordialement
 

fredh

XLDnaute Occasionnel
Re : Grouper les feuilles visible pour impression

Bonjour Omicron

J'ai oublier de preciser que j'ai mis un en tete et pied de page du genre "Feuille &[Page] sur &[Pages]", donc il faut que toutes les feuille visible soit grouper pour l'impresion.

Ta methode imprime le premier classeur avec en entete feuille 1 sur 1, puis le deuxieme classeur avec en entete feuille 1 sur 1.

Moi j'aimerai imprimer tout les claseurs en une seule fois avec pour le premier classeur feuille 1 sur 2 et le 2em classeur feuille 2 sur 2

Merci et @+
 

Omicron

XLDnaute Junior
Re : Grouper les feuilles visible pour impression

Rebonjour Fredh,

Je me doutais bien que la solution proposée ne répondait pas à ton attente.

Tu peux essayer le code suivant :

=========================================================

Private Sub CommandButton1_Click()

Dim ShtPrt As Worksheet

Set ShtPrt = Worksheets.Add
ShtPrt.Name = "TempSheet"
TempRow = 1

For Each Sh In Sheets
If Sh.Name <> "TempSheet" And Sh.Visible Then
Sheets("TempSheet").Cells(TempRow, 1) = "Feuille " & Sh.Name
TempRow = TempRow + 1
Sh.UsedRange.EntireRow.Copy Destination:=Sheets("TempSheet").Cells(TempRow, 1)
TempRow = TempRow + Sh.UsedRange.Rows.Count + 1
End If
Next Sh

Sheets("TempSheet").PrintOut
Sheets("TempSheet").Delete

End Sub

==========================================================

Attention, le regroupement des données à imprimer se fait dans feuille créée dynamiquement et supprimée en fin de traitement. Cette feuille s'appelle "TempSheet", elle ne doit pas exister quand tu lance le traitement. Au besoin tu peux choisir un autre nom, et adapter le code en conséquence ...

Cordialement ....
 

fredh

XLDnaute Occasionnel
Re : Grouper les feuilles visible pour impression

Bonsoir Omicron

J'ai tester ton code et malheuresement ce n'est pas ce que je desir.
Ton code met nom puis le contenu de la 1er feuille en "Tempsheet", puis pareil pour le feuille 2, 3, 4 etc...

Ce qu'il faudrait c'est recuperez les nom de feuille pour les selctionnez
ex de ton code modifier..
Code:
Private Sub CommandButton1_Click()
Dim ShtPrt As Worksheet
Set ShtPrt = Worksheets.Add
ShtPrt.Name = "TempSheet"
TempRow = 1
For Each Sh In Sheets
If Sh.Name <> "TempSheet" And Sh.Visible Then
Sheets("TempSheet").Cells(TempRow, 1) = [COLOR=blue]Sh.Name[/COLOR]
TempRow = TempRow + 1
[COLOR=blue]' Sh.UsedRange.EntireRow.Copy Destination:=Sheets("TempSheet").Cells[/COLOR][COLOR=blue](TempRow, 1)[/COLOR]
[COLOR=blue]' TempRow = TempRow + Sh.UsedRange.Rows.Count + 1[/COLOR]
End If
Next Sh
 
Sheets(Array([COLOR=red]Sheets("TempSheet").Range("A1"), Sheets("TempSheet").Range("A2"))).[/COLOR]Select
 
[COLOR=blue]Application.DisplayAlerts = False[/COLOR]
Sheets("TempSheet").Delete
[COLOR=blue]Application.DisplayAlerts = True[/COLOR]
End Sub

Masi ca ne marche pas

erreur d'execution '13'
imcompatibilté de type

Merci encore et bonne fin de WE
 
Dernière édition:

fredh

XLDnaute Occasionnel
Re : Grouper les feuilles visible pour impression

Bonjour omicron, jmps, gorfael, le fil

Je viens de tester votre code "midi a 19h" ou pourquoi faire simple quand on peut faire compliquer...
Il marche tres bien pour des classeurs sans feuille caché mais ne marche pas des qu'une feuille est cacher...

Bord....c'est dommage ya plus qu'a essayer de faire quelque chose de compliquer....

Merci et @+
 
Dernière édition:

fredh

XLDnaute Occasionnel
Re : Grouper les feuilles visible pour impression

Oui excuse j'ai Zapper

Seite 1 a Seite 5 (donc 5 feuilles) puis 3 feuilles aux nom aleatoire... bien sur je peut en avoir moins.
Du genre :
exemple 1 : Seite1
exemple 2 : Seite1, Seite 2, Matrix

etc...
 

Gorfael

XLDnaute Barbatruc
Re : Grouper les feuilles visible pour impression

fredh à dit:
Oui excuse j'ai Zapper

Seite 1 a Seite 5 (donc 5 feuilles) puis 3 feuilles aux nom aleatoire... bien sur je peut en avoir moins.
Du genre :
exemple 1 : Seite1
exemple 2 : Seite1, Seite 2, Matrix

etc...
Re...
Code:
Sub Test()
Dim X As Integer
Dim Y As Integer
Dim Tab_F() As String
For X = 1 To Worksheets.Count
    If Worksheets(X).Visible = True Then
        Y = Y + 1
        ReDim Preserve Tab_F(Y)
        Tab_F(Y) = Worksheets(X).Name
    End If
Next X
Select Case UBound(Tab_F, 1)
    Case 1
         Sheets(Tab_F(1)).Select
    Case 2
         Sheets(Array(Tab_F(1), Tab_F(2))).Select
    Case 3
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3))).Select
    Case 4
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4))).Select
    Case 5
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5))).Select
End Select
End Sub

A+

J'avais pensé à autre chose, mais ça devenait très compliqué suivant le nombre de feuilles, et comme j'ai eu le temps de réflexionner ... :)
 

fredh

XLDnaute Occasionnel
Re : Grouper les feuilles visible pour impression

Nickel ca roule avec des feuilles cacher (elle ne sont pas selectionner).
De plus ta routine active la premier feuille (c'est ce qu'il me fallait).

j'ai modifier ton code pour avoir mes 8 feuille au maxi :
Code:
Sub sheet_Select2()
Dim X, [COLOR=blue]Y [/COLOR]As Integer
Dim Tab_F() As String
For X = 1 To Worksheets.Count
    If Worksheets(X).Visible = True Then
        Y = Y + 1
        ReDim Preserve Tab_F(Y)
        Tab_F(Y) = Worksheets(X).Name
    End If
Next X
Select Case UBound(Tab_F, 1)
    Case 1
         Sheets(Tab_F(1)).Select
    Case 2
         Sheets(Array(Tab_F(1), Tab_F(2))).Select
    Case 3
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3))).Select
    Case 4
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4))).Select
    Case 5
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5))).Select
[COLOR=blue]    Case 6[/COLOR]
[COLOR=blue]         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5), Tab_F(6))).Select[/COLOR]
[COLOR=blue]    Case 7[/COLOR]
[COLOR=blue]         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5), Tab_F(6), Tab_F(7))).Select[/COLOR]
[COLOR=blue]    Case 8[/COLOR]
[COLOR=blue]         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5), Tab_F(6), Tab_F(7), Tab_F(8))).Select[/COLOR]
End Select
[COLOR=blue]ActiveWindow.SelectedSheets.PrintOut Copies:=1[/COLOR]
End Sub

Voila pour moi le post est résolue.

Un grand merci a tous et surtout a Gorfael

au plaisir de vous relire
 
Dernière édition:

fredh

XLDnaute Occasionnel
Re : Grouper les feuilles visible pour impression

Bonsoir Gorfael, le fil

Pascal76 ma fait remarquer quelque erreurs sur un post, je corrige donc celui ci
Code:
Sub Selecte()
Dim X [COLOR=orange]As Integer[/COLOR], Y As Integer
Dim Tab_F() As String
For X = 1 To Worksheets.Count
    If Worksheets(X).Visible = True Then
        Y = Y + 1
        ReDim Preserve Tab_F(Y)
        Tab_F(Y) = Worksheets(X).Name
    End If
Next X
Select Case UBound(Tab_F, 1)
    Case 1
         Sheets(Tab_F(1)).Select
    Case 2
         Sheets(Array(Tab_F(1), Tab_F(2))).Select
    Case 3
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3))).Select
    Case 4
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4))).Select
    Case 5
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5))).Select
    Case 6
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5), Tab_F(6))).Select
    Case 7
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5), Tab_F(6), Tab_F(7))).Select
    Case 8
         Sheets(Array(Tab_F(1), Tab_F(2), Tab_F(3), Tab_F(4), Tab_F(5), Tab_F(6), Tab_F(7), Tab_F(8))).Select
End Select
End Sub

Qui etait juste au depart....

Bon ben j'y ai droit....
 
Dernière édition:

Floranchik

XLDnaute Nouveau
Re : Grouper les feuilles visible pour impression

Bonjour GORFAEL,

Re ! (je t'ai répondu ce matin même sur un autre post mais ma nouvelle question, qui concerne le même fichier a sa place sur ce topic, cette fois).
Je cherchais une solution du côté de l'impression en un seul bloc (si possible avec mise à l'échelle sur une seule page) de plusieurs zones de ma feuille de calcul.
Mon problème comme tu l'as vu, c'est que je veux éliminer visuellement (et aussi à l'impression), tout ce qui ne sert pas dans ma feuille.
Je sais définir une zone (via la fonction adresse), qui peut être par exemple : Feuil1!$A$1:$G$18;$A$19:$G$40;$A$64:$G$135, ou encore Feuil1!$A$1:$G$18;$A$41:$G$63;$A$64:$G$135. il y a d'autres adresses possibles mais voyons déjà avec ces 2 là. --> ces 2 adresses (enfin, zones) apparaissent dans une cellule (chez moi la C204) et je m'imaginais naïvement sans doute, que dans le gestionnaire des noms il suffirait de signaler que la zone d'impression faisait référence à =INDIRECT(Feuil1!$C$204), puisque c'est exactement comme ça que je procède pour des graphs par exemple.

Non, ça ne marche pas, ça me crée une zone d'impression immense qui déborde largement des colonnes A à G.

Vois tu une solution avec une bonne macro "impression" ?

Merci encore de ton aide.
 

Gorfael

XLDnaute Barbatruc
Re : Grouper les feuilles visible pour impression

Salut Floranchik et le forum
T'as changé de login, ou tu es quelqu'un d'autre que l'auteur du suget ?
Mon problème comme tu l'as vu, c'est que je veux éliminer visuellement (et aussi à l'impression), tout ce qui ne sert pas dans ma feuille.
Je n'ai rien vu et je ne sais pas à quoi tu fais référence
Je sais définir une zone (via la fonction adresse), qui peut être par exemple : Feuil1!$A$1:$G$18;$A$19:$G$40;$A$64:$G$135
Donc, tu as essayé de le faire manuellement et tu imprime exactement ce que tu veux ?
Moi, je ne comprends pas :
"Feuil1!$A$1" : une zone d'impression se définit sur sa feuille => pourquoi le préciser
"$A$1:$G$18;$A$19:$G$40;$A$64:$G$135" ? Pour imprimer ça, je définis ma plage d'impression en "$A$1:$G$135" et je masque les lignes de 41 à 63.
A+
 

Discussions similaires

Réponses
12
Affichages
540

Statistiques des forums

Discussions
312 668
Messages
2 090 726
Membres
104 639
dernier inscrit
torrento