Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Print classeur sauf quelques feuilles

charette63

XLDnaute Occasionnel
Bonjour à toutes et tous,

Je cherche à créer une macro qui me permet d'imprimer un classeur à l’exception de quelques feuilles. Les exceptions sont la feuille nommées "Récapitulatif" et les feuilles dont le nom contient un caractère numérique.

Je suis parvenu à faire un code qui m’exclut la feuille "Récapitulatif" et les feuilles nommées EXCLUSIVEMENT en caractère numérique

Code:
Sub Tri_Print()

Dim feuille As Worksheet
For Each feuille In ThisWorkbook.Worksheets
  If feuille.Name <> "Récapitulatif" Then
    If IsNumeric(feuille.Name) = False Then
        feuille.PrintPreview
    End If
  End If
Next
End Sub

J'ai donc besoin d'aide pour une ligne de code qui m'excluerais les feuilles dont le nom contient au moins un chiffre

Si cette demande n'est pas réalisable, il y a un particularité dans les feuilles nommées ci haut, elles ont, dans leur cellule D1 un chiffre. Peut-être qu'il serait plus facile d'exclure les feuilles qui ont donc un chiffre en cellule D1.

Pour le test j'ai encoder la commande "printpreview"

Ah oui, tant que je suis là, (j'avoue que je n'ai pas encore fait de recherche), j'aimerais également ajouter une ligne de code qui sélectionne le range à imprimer:A1:N47

Je joint un petit fichier "test", le code se trouve dans le module3

merci de votre aide

cordialement
Thierry
 

Pièces jointes

  • test onglets template 2011.xls
    125 KB · Affichages: 62
  • test onglets template 2011.xls
    125 KB · Affichages: 63
  • test onglets template 2011.xls
    125 KB · Affichages: 62

flyonets44

XLDnaute Occasionnel
Re : Print classeur sauf quelques feuilles

Bonsoir
pour exclure une feuille de l'impression
if activesheet.range("a1).value >0 then
else
suite de ton code
voici du code pour définir la zone d'impression; tu adaptes la 3° ligne à ton besoin
le reste concerne de la mise en page si çà peut te servir
Sub Fastzonetoprint()
dim Mzone$
Mzone="$A$1:$K$100"
With ActiveSheet
.ResetAllPageBreaks
.PageSetup.PrintArea =mzone
End With
With ActiveSheet.PageSetup
.BlackAndWhite = True 'impression en noir et blanc '
.CenterHorizontally = True
.CenterVertically =false
.LeftMargin = Application.CentimetersToPoints(1)
.RightMargin = Application.CentimetersToPoints(0.5)
.TopMargin = Application.CentimetersToPoints(1.3)
.BottomMargin = Application.CentimetersToPoints(1.3)
.LeftFooter = "&F&08" 'Nom classeur'
.CenterFooter = "&A&08" 'nom feuille'
.RightFooter = "&J&08" 'date système '
end with
End Sub
Cordialement
Flyonets
 

Etienne2323

XLDnaute Impliqué
Re : Print classeur sauf quelques feuilles

Salut Thierry,
voici une proposition. J'ai ajouter une petite section supplémentaire avec le code de flyonets44 pour ajuster la zone d'impression.

VB:
Option Explicit

Sub Test()
Dim Nb_Feuilles As Byte, i As Byte, j As Byte
Dim Le_Nom As String
Dim C(1 To 10) As String
Dim X As Byte

Nb_Feuilles = Sheets.Count

C(1) = "1"
C(2) = "2"
C(3) = "3"
C(4) = "4"
C(5) = "5"
C(6) = "6"
C(7) = "7"
C(8) = "8"
C(9) = "9"
C(10) = "0"

For i = 1 To Nb_Feuilles
    Le_Nom = Sheets(i).Name
    'On va commencer par vérifier si le nom contient un chiffre
    For j = 1 To 10
        X = InStr(Le_Nom, C(j))
        'Si oui, alors on poursuit au prochain onglet
        If X <> 0 Then GoTo Poursuivre
    Next j
    'Si le nom de la feuille ne contient pas de chiffre, alors on va vérifier s'il
    's'agit de l'onglet "Récapitulatif".
    If Le_Nom <> "Récapitulatif" Then
        'Si ce n'est pas le cas, alors on print
        With Sheets(Le_Nom)
            .Select
            Call Fastzonetoprint
            .PrintPreview
        End With
    End If
Poursuivre:
Next i

Erase C
End Sub

VB:
Sub Fastzonetoprint()
Dim Mzone$
Mzone = "$A$1:$N$47"
With ActiveSheet
    .ResetAllPageBreaks
    .PageSetup.PrintArea = Mzone
End With

Cordialement,

Étienne

Edit : La solution de Job75 (que je salue au passage ) est beaucoup plus efficace !!!
 
Dernière édition:

charette63

XLDnaute Occasionnel
Re

merci à vous trois,

mon problème est résolu, j'ai pris le code de Job75, et le code flyonets44 et Etienne2323 pour compléter ma macro.

je joint le code final, si ça peut servir.

Code:
Sub Tri_Print()

Dim feuille As Worksheet
For Each feuille In ThisWorkbook.Worksheets
If feuille.Name <> "Récapitulatif" Then
If Not feuille.Name Like "*#*" Then

Dim Mzone$
Mzone = "$A$1:$K$36"
With ActiveSheet
    .ResetAllPageBreaks
    .PageSetup.PrintArea = Mzone
End With

        feuille.PrintPreview
    End If
    End If
Next
End Sub


Un grand merci

cordialement
Thierry
 

chindou

XLDnaute Occasionnel
Re : Print classeur sauf quelques feuilles

Bonjour charette63,

A la place de :

Code:
If IsNumeric(feuille.Name) = False Then
écrire :

Code:
If Not feuille.Name Like "*#*" Then
A+

Re : Print classeur sauf quelques feuilles

Bonjour charette63,

A la place de :

Code:
If IsNumeric(feuille.Name) = False Then
écrire :

Code:
If Not feuille.Name Like "*#*" Then
A+
la réponse qui ma fait gagner un sacré temps un tout grand merci jobs75
 

Discussions similaires

Réponses
5
Affichages
450
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…