Sub Unprotect()
Dim ToutBord As Worksheet
Set ToutBord = Sheets("2X1, 2X2, 2X3, 2X4, 2X5, 2X6, 2X7, 2X8, 2X9, 2Y1, 2Y2, 2Y3, 2Y4, 2Y5, 2Y6")
ToutBord.unprotect
End Sub
Pour le fun :il semble que le problème provienne du fait que je ne peut désigner plusieurs feuilles de calcul dans la fonction sheets
Merci de votre réponse. En la voyant, j’étais certain qje c’était la bonne ré’onse ou du moins, la bonne piste de solution mais il semble que non. J’ai aussi essayé différentes syntaxes sans succès.Bonsoir SHREKL,
Peut être comme ceci sans aucune certitude
Set ToutBord=Sheets(Array("2X1";"2X2";"2X3"; .......... ; "2Y4";"2Y5";"2Y6"))
Joyeux Noël
@+ Lolote83
For
Each
Var In
ThisWorkbook.Worksheets
(
Array
(... ».
J’ai copié-collé le code pour faire un test mais ça ne fonctionne pas non plus.
Un peu dé couragé. 😞
Sub test_ok()
Dim f As Worksheet, i%, feuilles() As String
For Each f In Worksheets
If f.Name Like "2??" Then
ReDim Preserve feuilles(i)
feuilles(i) = f.Name
i = i + 1
End If
Next f
Worksheets(feuilles()).Select False
End Sub
Afin de monter des commandes qui s'appliquent à plusieurs feuilles, j'essai de créer une variable objet
Sub OterProtection()
Const MesFeuilles = "2X1,2X2,2X3,2X4,2X5,2X6,2X7,2X8,2X9,2Y1,2Y2,2Y3,2Y4,2Y5,2Y6"
Dim x
For Each x In Split(MesFeuilles, ","): Sheets(x).Unprotect: Next
End Sub
C'est une hypothèse qui n'est pas contenue dans l'énoncé de la question. Et si on veut exclure la feuille 2Z1 ?If f.Name Like "2??" Then
Sub test_ok()
Dim feuilles() As String, ToutBord As Sheets
'
Set ToutBord = Worksheets(Split("2X1,2X2,2X3,2X4,2X5,2X6,2X7,2X8,2X9,2Y1,2Y2,2Y3,2Y4,2Y5,2Y6", ","))
ToutBord.Select
Sub test_ok()
Dim f() As String, ToutBord As Sheets
'
f = Split("2X1,2X2,2X3,2Z1,2X4,2X5,2X6,2X7,2X8,2X9,2Y1,2Y2,2Y3,2Y4,2Y5,2Y6", ",")
Set ToutBord = Worksheets(f)
ToutBord.Select
'
'Exclure feuilles 2Z1
Dim feuilles() As String
ReDim feuilles(1 To ToutBord.Count - 1)
Dim i, j As Integer: j = 1
Dim feuil As Worksheet
For i = LBound(f) To UBound(f)
Set feuil = ToutBord.Item(f(i))
If feuil.Name <> "2Z1" Then
feuilles(j) = CStr(feuil.Name)
If j <= UBound(feuilles) Then j = j + 1
End If
Next i
'
Set ToutBord = Worksheets(feuilles)
ToutBord.Select
'
'Unprotect = Objet de la classe Worksheet
Dim myObject As Worksheet
For Each myObject In ToutBord
Set myObject = Worksheets(myObject.Name)
myObject.Unprotect
Next myObject
'
End Sub
Const MesFeuilles = ",2X1,2X2,2X3,2X4,2X5,2X6,2X7,2X8,2X9,2Y1,2Y2,2Y3,2Y4,2Y5,2Y6,"
For Each f In Worksheets
If cbool(instr(MesFeuilles,"," & f.name & ",")) then f.Unprotect
Next
Avant de tomber dans la condescendance et dans les commentaires qui ne répondent à rien, peut-être que de lire mon message initial répondra exactement à ta question alors que je donne même un exemple de ce que je tente de faire. Je vais tout de même répéter pour une personne qui ne comprend pas que je veux appliquer cette variable à plusieurs commandes.avant de tomber définitivement dans le ridicule si tu nous précisait comment et à qu'elle fin tu compte utiliser cette variable multi objets?
Haha!!! Merci de votre réponse. Quand j'ai dit découragé, le mot "Déçu" de ne pas trouver ce que je cherchais aurait été plus approprié.Bonjour le fil
Découragé un jour de Noel, faut pas
VB:Sub test_ok() Dim f As Worksheet, i%, feuilles() As String For Each f In Worksheets If f.Name Like "2??" Then ReDim Preserve feuilles(i) feuilles(i) = f.Name i = i + 1 End If Next f Worksheets(feuilles()).Select False End Sub