Selectionner tous les onglets sauf un

M1L1

XLDnaute Nouveau
Bonjour à tous,

Sujet plus que traité de maniére différente mais je ne trouve pas de solution adaptée à mon cas.
J´ai un classeur avec une vingtaine d´onglets, selon l´utilisation du classeur certains sont cachés. Au dernier onglet actif, j´aimerais mettre un bouton pour l´impression du classeur avec toutes les feuilles actives sauf la derniere qui est affichée à l´écran.

Voici ce que j´ai trouvé, on ne doit pas etre loin mais ca bloque (en rouge)...

Sub Button15_Click()
Dim i As Integer, MonArray()
ReDim MonArray(Worksheets.Count)
For i = 1 To Worksheets.Count - 1
MonArray(i) = Sheets(i).Name
Next i
Sheets(i).Select
Application.Dialogs(xlDialogPrint).Show
End Sub

Petit détail :
La possibilité suivnate n´est pas possible dans mon cas :
- Cacher l´onglet en début de macro, lancer l´impression puis réafficher l´onglet
car une autre macro se lance automatiquement à l´affichage de l´onglet et ca fausserait tout le processus.

Alors, vous voyez quleque chose ?
Merci d´avance,
M1L1
 

pierrejean

XLDnaute Barbatruc
Re : Selectionner tous les onglets sauf un

bonjour Mil1

A tester

Code:
Option Base 1
Sub Button15_Click()
Dim i As Integer, MonArray()
ReDim MonArray(Worksheets.Count - 1)
For i = 1 To Worksheets.Count - 1
MonArray(i) = Sheets(i).Name
Next i
Sheets(MonArray).Select
Application.Dialogs(xlDialogPrint).Show
End Sub

NB: le option base 1 est important
 

M1L1

XLDnaute Nouveau
Re : Selectionner tous les onglets sauf un

Bonjour Pierre jean,
je crois qu´on est pas loin du résultat mais comme certains autres codes que j´ai essayé ca bloque sur :
Sheets(MonArray).Select

Quelles peuvent être les raisons d´un blocage à ce niveau là ?
- Des onglets cachés ?
- Excel en anglais ?
- ...
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Selectionner tous les onglets sauf un

Re

Pour le cas ou une ou des feuilles seraient masquées

Code:
Sub Button15_Click()
Dim i As Integer, MonArray()
ReDim MonArray(Worksheets.Count - 1)
For i = 1 To Worksheets.Count - 1
[COLOR=blue]Sheets(i).Visible = True
[/COLOR]MonArray(i) = Sheets(i).Name
Next i
Sheets(MonArray).Select
Application.Dialogs(xlDialogPrint).Show
End Sub

Si le problème persiste priere de poster ton fichier (sans données confidentielles)
 

M1L1

XLDnaute Nouveau
Re : Selectionner tous les onglets sauf un

Re,
Comme je disais dans le post de mon premier message, certains onglets sont cachés selon les utilisateurs et c´est normal. Ils ne doivent pas apparaitre et encore moins être imprimés.
Je regarde pour poster mon fichier...
 

pierrejean

XLDnaute Barbatruc
Re : Selectionner tous les onglets sauf un

Re

excuse moi , je me suis concentré sur le code sans avoir integré l'integralité de ton message

A tester:

Code:
Option Base 1
Sub Macro()
Dim i As Integer, MonArray()
ReDim MonArray(1)
For i = 1 To Worksheets.Count
 If Sheets(i).Visible = True And Sheets(i).Name <> ActiveSheet.Name Then
    MonArray(UBound(MonArray)) = Sheets(i).Name
    ReDim Preserve MonArray(UBound(MonArray) + 1)
 End If
Next i
ReDim Preserve MonArray(UBound(MonArray) - 1)
Sheets(MonArray).Select
Application.Dialogs(xlDialogPrint).Show
End Sub
 

M1L1

XLDnaute Nouveau
Re : Selectionner tous les onglets sauf un

Re,
En fichier joint, voici donc mon fichier réduit une plus simple expression !

Pour avoir une idée du fonctionnement du fichier :
Selon l´utilisateur = une vue personnalisée différente
La sélection d´une vue personnalisée cache et affiche certains onglets.
Seul un onglet est commun à toutes les vues = le dernier, où doit se trouver le bouton pour imprimer (PRINT). Cet onglet ne doit pas s´imprimer mais tous les autres actifs OUI (les cachés) NON.

Si qqchose n´est pas clair, dis le moi.
merci d´avance

M1L1
 
Dernière édition:

M1L1

XLDnaute Nouveau
Re : Selectionner tous les onglets sauf un

WAHOU !!
Merci Pierrejean !!
ca marche parfaitement au 2 premiers essais !!
Demain je regarde ca en profondeur mais ca m´a l´air parfait !!
merci beaucoup !
A bientot !
 

M1L1

XLDnaute Nouveau
Re : Selectionner tous les onglets sauf un

Bonjour Pierre Jean,

Ce matin, j´ai incrémenté ta macro dans mon fichier complet et je me suis rendu compte de 2 petis soucis :
1er : le plus important et que je dois résoudre pour continuer, est-il possible d´imprimer le classeur actif sauf l´onglet en cours de travail sans changer d´onglet ?
Je dis ca pour les raisons précédemment citées :

Petit détail :
La possibilité suivante n´est pas possible dans mon cas :
- Cacher l´onglet en début de macro, lancer l´impression puis réafficher l´onglet
car une autre macro se lance automatiquement à l´affichage de l´onglet et ca fausserait tout le processus.
M1L1

Donc lancer l´impression et changer d´onglet à un moment ou un autre de la macro n´est pas possible. Avec ton fichier exemple, on peut voir ca.
Stp, dis moi q tu peux le faire ! :p

2e soucis, moins grave :
Mon fichier original comporte beaucoup plus d´onglets et quand je lance l´impression il y a un bogue au niveau de la derniere page :
7 pages s´impriment et au bas de chaque page s´inscrit Page 1/7, puis sur la seconde page 2/7, etc. SAUF sur la derniere page où c´est écrit 7/8 alors qu´il n´y a que 7 pages !
Cette incrémentation se fait pourtant tout simplement avec les pied-de-pages !

Bref, une fois de plus merci pour ton aide et si tu pouvais voir ca, au moins le premier point, ce serait top !

M1L1
 

pierrejean

XLDnaute Barbatruc
Re : Selectionner tous les onglets sauf un

Re

Il m'est difficile de resoudre tes problemes pour la bonne (ou mauvaise) raison qu'ils n'apparaissent pas chez moi
Dans le dialogue imprimante mon Epson propose d'imprimer 'les feuilles selectionnées'
Et le compte des feuilles est exact
 

M1L1

XLDnaute Nouveau
Re : Selectionner tous les onglets sauf un

Re,
OK pour le compte des feuilles.
Mais juste concernant l´impression, la macro doit avoir le meme effet chez toi.
Quand tu lances l´impression tu es à la feuille "Finalising" et quand tu as imprimé tu te retrouves sur une autre feuille. Comment empêcher que l´onglet ne change lors de l´éxécution de la macro ?

Pour rappel une fois encore :

Citation:
Envoyé par M1L1
Petit détail :
La possibilité suivante n´est pas possible dans mon cas :
- Cacher l´onglet en début de macro, lancer l´impression puis réafficher l´onglet
car une autre macro se lance automatiquement à l´affichage de l´onglet et ca fausserait tout le processus.

Merci de me dire si tu vois quelque chose,
M1L1
 

pierrejean

XLDnaute Barbatruc
Re : Selectionner tous les onglets sauf un

Re

Teste ceci

Code:
Option Base 1
Sub Button15_Click()
Dim i As Integer, MonArray()
ReDim MonArray(1)
[COLOR=blue]Set ws = ActiveSheet
[/COLOR]For i = 1 To Worksheets.Count
 If Sheets(i).Visible = True And Sheets(i).Name <> ActiveSheet.Name Then
    MonArray(UBound(MonArray)) = Sheets(i).Name
    ReDim Preserve MonArray(UBound(MonArray) + 1)
 End If
Next i
ReDim Preserve MonArray(UBound(MonArray) - 1)
Sheets(MonArray).Select
[COLOR=blue]Application.EnableEvents = False
[/COLOR]Application.Dialogs(xlDialogPrint).Show
[COLOR=blue]ws.Select
[/COLOR][COLOR=blue]Application.EnableEvents = True
[/COLOR]End Sub
 

M1L1

XLDnaute Nouveau
Re : Selectionner tous les onglets sauf un

Bonjour Pierrejean,
Bonne nouvelle cette fois ci !
La macro que tu m´as donné fonctionne très bien : les bonnes pages s´impriment et la macro ne se lance pas quand on revient sur la page.
En plus j´ai compris la manip ! lol
Merci beaucoup !

Concernant les n° de pages, je vais me pencher sur la question, si tu as des idées concernant l´origine de ce soucis, tiens moi au courant.

Encore merci beaucoup pour ton aide !
A bientot,
M1L1
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 042
Membres
102 765
dernier inscrit
richdi