Impression de plusieurs feuillets excel d'après un formulaire

Fermé
davidaab Messages postés 1 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 9 mars 2015 - Modifié par Chris 94 le 9/03/2015 à 15:51
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 mars 2015 à 07:48
Bonjour,
J'ai besoin de votre aide.
J'ai un formulaire qui s'ouvre à l'ouverture d'un fichier excel, contenant des checkbox et des optionbutton.
Selon ce qui est coché, je souhaite tout imprimer à la suite. J'ai pensé programmer ça comme suit, mais j'obtient un message d'erreur, me disant "Erreur d'execution '9', l'indice n'appartient pas à la sélection":

Private Sub BtnImprimer_Click()

Load UserForm1

Dim chaine_car As String
Dim listing_feuillet
chaine_car = ""
  
'feuille1
If CheckBox1.Value = True Then
chaine_car = chaine_car & """feuille1"""
End If

'feuille2
If OptionButton1.Value = True Then
    If chaine_car = "" Then
        chaine_car = chaine_car & """feuille2"""
    Else
        chaine_car = chaine_car & ", " & """feuille2"""
    End If
End If

`feuille3
If OptionButton2.Value = True Then
    If chaine_car = "" Then
        chaine_car = chaine_car & """Feuille3"""
    Else
        chaine_car = chaine_car & ", " & """Feuille3"""
    End If
End If

'feuille4
If CheckBox39.Value = True Then
    If chaine_car = "" Then
        chaine_car = chaine_car & """feuille4"""
    Else
        chaine_car = chaine_car & ", " & """feuille4"""
    End If
End If

Sheets(Array(chaine_car)).Select
Dim tableau As Variant
tableau = chaine_car
Sheets(tableau).Select
tableau.Name = chaine_car
Selection.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End sub

MERCI BEAUCOUP par avance
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 mars 2015 à 07:48
Bonjour,

C'est ton histoire de Select et de tableau en fin de code qui te bloque.
Regarde, avec ces différents tests, ce que tu peux faire grâce à la fonction Split :
1er test :
Sub test1()
Dim mesFeuilles As String, i As Byte
mesFeuilles = "Feuil1, Feuil2, Feuil3"
MsgBox "1ère feuille : " & Split(mesFeuilles, ", ")(0)
MsgBox "Nbre de feuilles : " & UBound(Split(mesFeuilles, ", ")) + 1
MsgBox "Dernière feuille : " & Split(mesFeuilles, ", ")(UBound(Split(mesFeuilles, ", ")))
End Sub

2nd test :
Sub test2()
Dim mesFeuilles As String, i As Byte
mesFeuilles = "Feuil1, Feuil2, Feuil3"
For i = 0 To UBound(Split(mesFeuilles, ", "))
    Sheets(Split(mesFeuilles, ", ")(i)).PrintOut
Next
End Sub
0