Boucle de protection VBA qui en fait trop
Bonjour,
J'ai grâce à votre forum pu trouver une boucle VBA pour protéger/déprotéger plusieurs onglets et/ou plages simultanément : gé-nial !
Cependant, la boucle sensée s'appliquer à certains onglets seulement (5 à 43 dans mon cas) s'applique étonnamment aussi aux onglets précédents (1 à 4 donc). En pratique, cette boucle de protection ou déprotection ne devrait s'appliquer qu'aux onglets 5 à 43, sans affecter (en particulier) mon onglet "Feuil3 (SYNTHESE PREVI)" sur lequel je veux une protection de toute la feuille. Or je ne peux pas (plus !) protéger cette feuille en entier, et je constate que la protection de plage s'y applique alors que - en théorie - elle ne le devrait pas.
Quelque chose m'échappe assurément mais, en bon autodébutant, je n'arrive pas à identifier quoi.
Le code en question :
Private Sub CommandButton1_Click() 'Déprotéger
Dim I As Byte 'déclare la variable I (Incrément)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
For I = 5 To 43 'boucle sur "x" onglets de 5 à 43
With Sheets(I) 'prend en compte l'onglet de la boucle
.Unprotect 'déprotège
.Cells.Locked = False 'déverrouille toutes les cellules
End With 'fin de la prise en compte de l'onglet de la boucle
Next I 'prochain onglet de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
Private Sub PROTEGER_Click() 'Protéger
Dim I As Byte 'déclare la variable I (Incrément)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
For I = 5 To 43 'boucle sur "x" onglets de 5 à 43
With Sheets(I) 'prend en compte l'onglet de la boucle
.Unprotect 'déprotège
.Cells.Locked = False 'déverrouille toutes les cellules
Application.Union(.Range("A1:C40"), .Range("N1:Z40")).Cells.Locked = True 'verrouille les plages A1:C40 et N1:Z40
.Protect 'protège
End With 'fin de la prise en compte de l'onglet de la boucle
Next I 'prochain onglet de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End SubEt le visuel des feuilles qui me donne à penser que la boucle "en fait trop" :
Et enfin le fichier à toutes fins utiles :
Merci de votre aide, et belle journée à vous.
Bonsoir,
vu que les quatre feuilles qui ne doivent pas subir la protection sont bien les 4 premières en partant de la gauche, chez moi je n'ai aucun problème avec les deux boutons de la feuille Vierge. Par contre la deuxième est protégée et je n'ai pas le code...
Désolé de ne pouvoir faire mieux...
@ bientôt
LouReeD
Bonjour et merci pour cette réponse.
J'ai finalement pu parvenir à mes fins. Petit récap' de mes manips, pour les noobs comme moi susceptibles de rencontrer le même problème :
* Eliminer les cellules fusionnées autant que faire se peut (ça semble perturber un peu) ;
* Appliquer le blocage des cellules dans le code de la page concernée (Cells.Locked = True).
Conscient que l'issue n'est pas forcément la plus clean qui soit, mais en tout cas in fine ça fonctionne comme attendu.
Merci et bonne continuation.