Macro Impression

Bonjour, je vous explique mon problème.

J'ai une liste avec les onglets de mon classeur en colonne B et en colonne C j'inscris 1 ou 0 si je veux imprimer ou non l'onglet face au chiffre. J'ai une macro pour imprimer plusieurs onglets de mon classeur en fonction de 0 ou 1 mais j'ai une erreur qui s'affiche: icompatibilité de type erreur '13'. Voici mon code, j'ai mis en gras souligné ce que m'indique le débogage. Merci de votre aide car je sèche étant débutant.

Sub Imprime_Feuilles()

' Macro Imprime_Feuilles>

' par Le CFO masqué

Dim vararray() As String

Dim csname As Integer, c As Integer

Dim countarr As Integer, r As Integer

Dim sname As Worksheet

'set up location and counter variables

csname = Range("B5").Column

c = Range("C5").Column

Set sname = ActiveSheet

r = Range("C5").Row

countarr = 0

'loop in sheets list

While sname.Cells(r, csname) <> ""

'add to array if flag is on

If sname.Cells(r, c) = 1 Then

ReDim Preserve vararray(countarr)

vararray(countarr) = sname.Cells(r, csname).Value

countarr = countarr + 1

End If

r = r + 1

Wend

Sheets(vararray).Select

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

sname.Activate

End Sub

Bonjour,

Ton code marche chez moi (Excel 2007) !

Testes avec ce code pour voir :

Sub Test()

    Dim Plage As Range
    Dim Cel As Range
    Dim I As Integer

    With ActiveSheet: Set Plage = .Range(.Cells(5, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With'nom des feuilles à partir de B5

    For Each Cel In Plage
        I = I + 1
        If Cel.Offset(, 1).Value = 1 Then
            If I = 1 Then Worksheets(Cel.Value).Select (True) Else Worksheets(Cel.Value).Select (False)
        End If
    Next Cel

    'ActiveWindow.SelectedSheets.PrintPreview
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End Sub

Bonjour,

Tu peux avoir une erreur si ton tableau n'est pas rempli ou contient des noms de feuille inexistants.

ci-dessous simplification de ton code avec gestion d'erreur

Sub Imprime_Feuilles()

' Macro Imprime_Feuilles>
' par Le CFO masqué

Dim vararray() As String
Dim countarr As Integer, r As Integer

r = 5: countarr = 0

'loop in sheets list
With ActiveSheet
    While .Cells(r, "B") <> ""
        'add to array if flag is on
        If .Cells(r, "C") = 1 Then
            ReDim Preserve vararray(countarr)
            vararray(countarr) = .Cells(r, "B").Value
            countarr = countarr + 1
        End If
        r = r + 1
    Wend
End With

On Error Resume Next: countarr = UBound(vararray)
If Err.Number = 0 Then Sheets(vararray).PrintOut Copies:=1, Collate:=True

End Sub

Bonjour,

Merci de vos réponses. Utilisant pour faire la liste de mes onglets je n'ai pas pensé à vérifier si elle était correcte. Et c'est là que se trouvait l'erreur. Merci encore je n'y aurait pas pensé tout seul.

Dernière question, est-il possible de rajouter un paramètre à la macro pour qu'au lancement de l'impression le recto-verso se fasse automatiquement ?

julien64 a écrit :

Dernière question, est-il possible de rajouter un paramètre à la macro pour qu'au lancement de l'impression le recto-verso se fasse automatiquement ?

L'impression en recto-verso ne peut se paramétrer que via les propriétés de ton imprimante.

Ok merci beaucoup. je ferai comme ça alors. Il faudra juste que je pense à activer le recto-verso au moment de l'impression et à le désactiver après.

Merci.

Rechercher des sujets similaires à "macro impression"