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
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