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 !

https://forum.excel-pratique.com/excel/boucle-vba-pour-proteger-plusieurs-plages-sur-plusieurs-feuil...

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 Sub

Et le visuel des feuilles qui me donne à penser que la boucle "en fait trop" :

image

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.

Rechercher des sujets similaires à "boucle protection vba qui fait trop"