Erreur PrintOut

Legolas

XLDnaute Occasionnel
Bonjour le forum !

J'ai un problème avec la fonction PrintOut que je ne comprends pas...
Et je n'aime pas ne pas comprendre !

Voici le code que j'utilise

VB:
Sub Bouton1_Cliquer()
    'impression
    Application.Calculation = xlManual
    Dim nb_annexe, nb_rapport, i As Integer
    nb_annexe = Worksheets("Accueil").Cells(1, 9)
    nb_rapport = Worksheets("Accueil").Cells(7, 2)

    Worksheets("Page_garde").PrintOut

    For i = 1 To nb_rapport
        rapport = "Rapport" & i
        Worksheets(rapport).PrintOut
    Next i
   
    For Each fs In ThisWorkbook.Worksheets
        If fs.Name <> "Accueil" And fs.Name <> "Page_garde" And fs.Name <> "Annexe" And fs.Name <> "Data" And Left(fs.Name, 3) <> "Rap" Then 
            fs.PrintOut
        End If
    Next fs
...
End Sub

La macro bug sur fs.PrintOut ... Savez-vous me dire pourquoi ?
Merci d'avance

++
 

Dranreb

XLDnaute Barbatruc
Re : Erreur PrintOut

À quel moment la cellule B7 de Accueil est elle renseignée ? Et si c'est manuel qu'est-ce qui garantit qu'un chiffre supérieur au nombre de feuilles Rapport ne soit renseigné ?

Non, j'ai rien dit, ok, j'ai vu.
Ben je ne vois pas alors.

Ah, si, une chose: j'ai remplace PrintOut par PrintPreView pour les tests mais jai eu l'erreur quand même sur Rapport1. J'ai alors affiché la feuille, en continuant le pas à pas le PrintPreview a alors marché.

Il semblerait qu'il faille l'écrire :
VB:
        With Worksheets("Rapport" & i)
           .Visible = xlSheetVisible
           .PrintOut
           .Visible = xlSheetHidden: End With
 
Dernière édition:

Legolas

XLDnaute Occasionnel
Re : Erreur PrintOut

En fait, l'impression de la feuille "Page_garde" et des feuilles "Rapport" (1 à 6 selon les renseignements de l'utilisateur) se font très bien !
Ce n'est vraiment que fs.PrintOut qui ne fonctionne pas.

Et je pense avoir trouver une solution en ajoutant la déclaration de "fs" en début de Sub :

VB:
Sub Bouton1_Cliquer()
    'impression
    Application.Calculation = xlManual
    Dim nb_annexe, nb_rapport, i As Integer

    Dim fs As Worksheet

    nb_annexe = Worksheets("Accueil").Cells(1, 9)
    nb_rapport = Worksheets("Accueil").Cells(7, 2)
...

Faut que je teste sur plus de cas, mais cela a fonctionné une fois !

++
 

Dranreb

XLDnaute Barbatruc
Re : Erreur PrintOut

C'est mieux de tout déclarer de toute façon, et explicitement typé chaque fois que possible.
Je ne peux pas voir parce qu'il n'y a dans le classeur joint aucune feuille dont le nom est différent de tout ce qui est prévu.
 

Discussions similaires

Réponses
6
Affichages
275

Statistiques des forums

Discussions
312 412
Messages
2 088 195
Membres
103 763
dernier inscrit
p.michaux