Problème sélection multiple de feuilles par vba

Essart

XLDnaute Junior
Bonjour,

Dans un fichier contenant plus de 10 feuilles,
je cherche à faire une sélection multiple de feuilles par vba
selon un double critère :
- exclusion des feuilles par boucles suivant une liste, sauf 2 qui seront en premier, puis
- sélection des feuilles restantes par boucle selon couleur de l'onglet,
à savoir, bleu clair d'abord, puis or puis saumon

J'arrive à concaténer sous variable string le nom de tous les onglets,
mais quand j'appelle l'ensemble des onglets ainsi créés avec cette variable, ça boque sur la ligne :

Sheets(Array(nom)).Select

et une ligne du type suivant ne fonctionne pas non plus

Sheets(Array(""" & nom & """)).Select

avec "erreur d'exécution 9"
"l'indice n'appartient pas à la sélection"

je cherche à avoir quelquechose du type :
Sheets("Page de garde").Activate

Je ne vois pas comment résoudre le problème !
Un coup de pouce devient nécessaire ...

Merci pour toutes vos suggestions

intégralité du code

Sub impression_pdf()

Dim nom As String
nom = """Page de garde""" & ", " & """Synthèse"""
For i = 1 To Sheets.Count ' rechercher NC organisation
With Sheets(i)
If .Name <> "Data" And .Name <> "BD Admin" And .Name <> "BD Chantier" And _
.Name <> "SF02" And .Name <> "Page de garde" And .Name <> "Organisation" And _
.Name <> "Chantier" And .Name <> "Synthèse" And .Name <> "Feuille de présence" And _
.Name <> "BD Preuve" And .Tab.ColorIndex = 34 Then ' couleur "bleu clair" de l'onglet "SF02 pour une NC organisation
nom = nom & ", """ & .Name & """"
End If
End With
Next i

For i = 1 To Sheets.Count ' rechercher NC Chantier
With Sheets(i)
If .Name <> "Data" And .Name <> "BD Admin" And .Name <> "BD Chantier" And _
.Name <> "SF02" And .Name <> "Page de garde" And .Name <> "Organisation" And _
.Name <> "Chantier" And .Name <> "Synthèse" And .Name <> "Feuille de présence" And _
.Name <> "BD Preuve" And .Tab.ColorIndex = 44 Then ' couleur "or" de l'onglet "SF02 pour une NC Chantier
nom = nom & ", """ & .Name & """"
End If
End With
Next i

For i = 1 To Sheets.Count ' rechercher KO Chantier
With Sheets(i)
If .Name <> "Data" And .Name <> "BD Admin" And .Name <> "BD Chantier" And _
.Name <> "SF02" And .Name <> "Page de garde" And .Name <> "Organisation" And _
.Name <> "Chantier" And .Name <> "Synthèse" And .Name <> "Feuille de présence" And _
.Name <> "BD Preuve" And .Tab.ColorIndex = 22 Then ' couleur "saumon" de l'onglet "SF02 pour un KO Chantier
nom = nom & ", """ & .Name & """"
End If
End With
Next i
' MsgBox nom
Sheets(Array(nom)).Select
'ne fonctionne pas non plus Sheets(Array(""" & nom & """)).Select
Sheets("Page de garde").Activate
'Attendu : Sheets(Array("Page de garde", "Synthèse", "Feuil2", "Feuil4", "Feuil3", "Feuil1")).Select
'Attendu : Sheets("Page de garde").Activate

End Sub
 

Pièces jointes

  • test_onglets.zip
    459.1 KB · Affichages: 50
  • test_onglets.zip
    459.1 KB · Affichages: 53
  • test_onglets.zip
    459.1 KB · Affichages: 48

Essart

XLDnaute Junior
Re : Problème sélection multiple de feuilles par vba

petite erreur,
il fallait lire :

je cherche à avoir quelquechose du type :
Sheets(Array("Page de garde", "Synthèse", "Feuil2", "Feuil4", "Feuil3", "Feuil1")).Select
Sheets("Page de garde").Activate
 

Essart

XLDnaute Junior
Re : Problème sélection multiple de feuilles par vba

Bonsoir à tous,

dans ce nouveau fichier,
j'ai simplifié le programme en supprimant les lignes de recherche d'onglet pour ne plus garder que le cœur du problème qui bogue à savoir :

Dim nom As String
nom = """Page de garde""" & ", " & """Synthèse"""

'ajout d'une autre feuille au nom preconstitué
nom = nom & ", """ & Sheets("Feuil5").Name & """"


Sheets(Array(nom)).Select ' ligne qui bogue
Sheets("Page de garde").Activate
' ne fonctionne pas non plus avec Sheets(Array(""" & nom & """)).Select
c'est effectivement plus simple pour cerner le problème....

j'ai essayé en définissant : nom as variant mais cela ne change rien ...

je suis en panne d'idée... et en appelle à tous pour trouver une solution

Essart
 

Pièces jointes

  • test_onglets.zip
    457.9 KB · Affichages: 62
  • test_onglets.zip
    457.9 KB · Affichages: 54
  • test_onglets.zip
    457.9 KB · Affichages: 56

Essart

XLDnaute Junior
Re : Problème sélection multiple de feuilles par vba

Bonjour à tous,

j'ai trouvé la solution dans les anciens post,
en utilisant :

Dim Sht As Worksheet
For Each Sht In ActiveWorkbook.Sheets
Sht.Select Replace:=False
Next Sht

bonne journée
 

micmond

XLDnaute Nouveau
Bonjour,
J'ai le même probleme que plus haut en 2021. Mais je ne comprends pas ta solution

Sheets(temp()).Select ou
Sheets(temp).Select
ne fonctionne pas si temp est defini comme Dim temp() As Variant ou Dim temp() As String avec plus d'une valeur string (nom d'onglet par exemple) dans le tableau
exemple temp(0) = "aaa' et temp(1) = "bbb"
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @micmond,

On pourrait aussi se faire une procédure générique qui sélectionne des feuilles d'un classeur et active la première des feuilles à sélectionner.

Le code de la procédure :
VB:
Sub Act_Sel(classeur As Workbook, ParamArray liste())
' sélectionne les feuilles dont le nom est indiqué en Liste()
' active la première feuille de la liste
Dim i As Long
   If UBound(liste) < 0 Then Exit Sub
   With classeur
      .Activate
      .Sheets(liste(LBound(liste))).Select
      For i = LBound(liste) + 1 To UBound(liste): .Sheets(liste(i)).Select False: Next
   End With
End Sub

Exemple d'utilisation :
Code:
Sub Test()
   Act_Sel ThisWorkbook, "feuil3", "feuil1", "feuil5"
End Sub
 

Pièces jointes

  • Essart- select feuilles- v1.xlsm
    22.5 KB · Affichages: 3
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Un petit moment d'égarement o_O.

On peut faire beaucoup plus court pour la procédure générique :

VB:
Sub Act_Sel(classeur As Workbook, ParamArray liste())
   If UBound(liste) < 0 Then Exit Sub
   classeur.Activate: Sheets(liste).Select: Sheets(liste(0)).Activate
End Sub

edit : bonjour @Usine à gaz ;)
 

Pièces jointes

  • Essart- select feuilles- v1a.xlsm
    22.2 KB · Affichages: 3
Dernière édition:

Discussions similaires

Réponses
1
Affichages
119
Réponses
0
Affichages
83

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo