Salut Manu, le Forum
Ben tu as mis un sacré bazar dans le VBA de ce fichier !!
Premièrement :
En Private Module de la Feuille "ID", ceci :
Private Sub CommandButton1_Click()
Sub Selectfeuilles() 'Selection des Feuilles dans L'onglet ID
blah blah blah toute la macro.......
non !
Soit le CommandButton1 contient lui même une procédure Private soit il lance une procédure publique dans un module standard... Comme Ceci :
Private Sub CommandButton1_Click()
SelectionImpression 'pour lancer la macro que je fournis ci-dessous
End Sub
Deuxièmement :
Dans ton module standard "Module2" il y avait le même code que dans le bouton... Pas catholique du tout çà !!!
Pour le reste :
Ta Collection est bien vue, mais je n'ai pas trouvé génial d'utiliser On Error Resume Next pour l'alimenter, suivi d'un On Error GoTo 0... Non je fais plus simple avec une double boucle, ptet un peu long si tu as énormément de feuilles, mais sinon çà ne peut pas planter puisque je fais une vérification des noms d'onglets avant chaque addition dans la Collection...
Voici le code à mettre en module standard :
Sub SelectionImpression()
Dim X As Byte, Y As Byte, L As Byte, i As Byte, Collect As New Collection
L = Sheets("ID").Range("A65536").End(xlUp).Row
For Y = 1 To L
For X = 1 To Sheets.Count
If Sheets(X).Name <> "ID" Then
If CStr(Sheets("ID").Range("A" & Y)) = Sheets(X).Name Then
Collect.Add Sheets(X).Name
End If
End If
Next X
Next Y
For i = 1 To Collect.Count
If ActiveSheet.Name = ("ID") Then
Sheets(CStr(Collect(i))).Select True
Else
Sheets(CStr(Collect(i))).Select False
End If
Next i
ActiveWindow.SelectedSheets.PrintPreview
ActiveWindow.SelectedSheets.PrintOut
End Sub
Bonne Nuit
@+Thierry