Protection feuilles

Bonjour à tous,

je souhaiterai modifier ce code afin qu'il me laisse les autorisations suivantes :

  • Sélectionner les cellules verrouillées
  • Sélectionner les cellules déverrouillées
  • Format de cellule
  • Format de colonnes
  • Format de lignes

Voici le code :

Sub Protéger()

' Protection automatique de toutes les feuilles d'un classeur

Dim nombre As Integer

Dim Motdepasse As String

Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")

nombre = ActiveWorkbook.Sheets.Count

Application.ScreenUpdating = False

For i = 1 To nombre

Worksheets(i).Protect Password:=jeje62600

Next i

End Sub

Merci d'avance pour votre aide,

Cordialement,

jéjé62600

Bonjour,

Voici le résultat obtenu avec l'enregistreur de macro

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
Dim Motdepasse As String
    Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")
    nombre = ActiveWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    For i = 1 To nombre
Worksheets(i).Protect Password:=Motdepasse, DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True
    Next i
End Sub

A+

Bonjur,

après avoir des essais, je m'aperçois qu'en fait ce code fonctionne avec n'importe quel mot de passe.

Si on choisit la macro "Protéger", je peux écrire un autre mot de passe que celui spécifié dans le code.

Et lorsque l'on choisit la macro "déprotéger", on peux choisir un autre mot de passe que celui qui a servi à protéger les feuilles.

Quelqu'un peut-il m'aider soit en modifiant le code soit avec un code complétement différent ?

Merci d'avance,

Cdt,

jeje62600

Bonjour,

Tu peux placer le mot de passe "en dur" dans tes 2 codes.

Sub Protéger()
Dim nombre As Integer
Dim Motdepasse As String
    nombre = ActiveWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    For i = 1 To nombre
        Worksheets(i).Protect Password:="jeje62600", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True
    Next i
End Sub

Sub Deprotéger()
Dim nombre As Integer
    nombre = ActiveWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    For i = 1 To nombre
        Worksheets(i).Unprotect Password:="jeje62600"
    Next i
End Sub

Cela dit, je ne vois pas vraiment l'utilité du mot de passe s'il suffit de cliquer sur un bouton pour protéger ou déprotéger.

A+

Bonjour,

merci pour ton aide mais malheureusement cela ne fonctionne toujours pas.

En effet, avec le code que tu m'as donné, je n'ai pas à indiquer quel est le mot de passe.

J'ai inséré ceci en plus :

Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")

Et là c'est presque la même chose car je peux lui indiquer n'importe quel mot de passe alors que je veux qu'il n'y en ait qu'un seul de possible.

Cdt,

jéjé62600

Bonjour,

Je commence à comprendre (j'espère !)

Sub Protéger()
Dim nombre As Integer
Dim Motdepasse As String
    nombre = ActiveWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")
    If Motdepasse = "jeje62600" Then
        For i = 1 To nombre
            Worksheets(i).Protect Password:="jeje62600", DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
            AllowFormattingRows:=True
        Next i
    End If
End Sub
Sub Deprotéger()
Dim nombre As Integer
    nombre = ActiveWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")
    If Motdepasse = "jeje62600" Then
        For i = 1 To nombre
            Worksheets(i).Unprotect Password:="jeje62600"
        Next i
    End If
End Sub

A+

Re,

désolé celà ne fonctionne toujours pas.

ce que je souhaite c'est avoir une macro avec un mot de passe unique qui protége toutes les feuilles.

Et si le mot de passe n'est pas le bon alors excel ne fait rien.

Même chose pour déprotéger l'ensemble des feuilles.

Cdt

jéjé62600

désolé celà ne fonctionne toujours pas.

Tu peux être plus précis ?

Vu de mon écran, ça semble fonctionner correctement.

29jeje62600.xlsm (18.74 Ko)

A+

la protection et la déprotection fonctionne, le problème est que celà fonctionne avec n'importe quel mot de passe que tu écris dans la boite de dialogue.

Le problème est-il dû au fait que je suis sur excel 2003?

Cdt

jéjé62600

Bonjour,

Une question : Quel est nombre d'utilisateurs de ce fichier?

Cdlt

Salut

5 utilisateurs et 2 "administrateurs"

Dans mon fichier, les utilisateurs n'ont accès qu'à certaines parties des différentes feuilles et les administrateurs ont accès à tout car ils auront des données à retranscrire.

Cdt

jéjé62600

Bonjour,

J'ai une proposition toute simple en VBA :

Dans ThisWorkbook

Option Explicit
Private Sub Workbook_Open()
Dim nom As String
    Application.ScreenUpdating = False
    ' Cette propriété renvoie ou définit le nom de l'utilisateur actif
    nom = Application.UserName
    Select Case nom
        Case "Administrateur1", "Administrateur2,"
            ' code
        Case Else
            ' code
        End If
    End Select
End Sub

la protection et la déprotection fonctionne, le problème est que celà fonctionne avec n'importe quel mot de passe que tu écris dans la boite de dialogue.

J'ai du mal à comprendre car le code impose que la protection / déprotection ne peut s'effectuer que si le mot de passe est correct.

Tu es sûr d'appliquer le code que je t'ai transmis ?

A+

Oui,

je fais un copier/coller.

Re,

Et je persévère

Cdlt

Et quand tu testes le classeur tel que je te l'ai transmis, tu observes le même phénomène ?

A+

re,

je pense que se sera plus simple si je mets mon fichier en pièce jointe.

J'ai volontairement supprimé les feuilles de Avril à Décembre pour ne pas surcharger l'ajout du fichier.

Voici les autorisations que je souhaite :

Feuilles "Vacances" : accès réservé aux administrateurs donc mot de passe exigé pour la modif

Feuilles "Données Enfants" : accès autorisé aux utilisateurs de la cellule G5 à la cellule R65536, le reste des cellules doit

être verrouillé donc mot de passe exigé pour la modif.

Feuilles de "Janvier" à "Mars" : accès autorisé aux utilisateurs de la cellule E5 à la cellule CS154,

ainsi que de la cellule E165 à CS165, de la cellule E168 à CS168 et de la cellule E170 à CS170

le reste des cellules doit être verrouillé donc mot de passe exigé pour la modif.

De plus, sur les feuilles de "Janvier" à "Mars", les colonnes F, I, L, O, R U, X, AA, AD, AG, AJ, AM, AP, AS, AV, AY, BB, BE, BH, BK, BN, BQ, BT, BW, BZ, CC, CF, CI, CL, CO, CR doivent être verrouillés donc mot de passe exigé pour la modif.

Merci pour toute l'aide que vous m'apporterez

Cdt,

Jéjé62600


Oui celà fait exactement la même chose.

13jeje62600.7z (138.13 Ko)

Désolé mais je ne vois pas le problème.

Toutes les feuilles sont bien protégées ou déprotégées suivant la demande.

Si le mot de passe est incorrect, l’action est inopérante.

Pour lever la protection dans certaines cellules, il suffit d’ôter le verrouillage.

17jeje62600.zip (188.24 Ko)

A+

je te remercie pour ton aide

j'espère que quelqu'un d'autre pourra m'aider car j'ai toujours le même pb.

cdt

jéjé62600

ca y est j'ai trouvé.

voici le code pour ceux que cela intéresse :

Sub Protection()

mdp = InputBox("Veuillez entrer le mot de passe", "Enlever la protection des feuilles", "")

If (mdp = "chloe") Then

' Si le mot de passe est bon, on exécute la boucle...

For i = 1 To Sheets.Count

Sheets(i).Protect "chloe", DrawingObjects:=True, Contents:=True, Scenarios:=True _

, AllowFormattingCells:=True, AllowFormattingColumns:=True, _

AllowFormattingRows:=True

Next i

Else: MsgBox ("Mauvais mot de passe.")

End If

End Sub

Sub Déprotection()

mdp = InputBox("Veuillez entrer le mot de passe", "Enlever la protection des feuilles", "")

If (mdp = "chloe") Then

' Si le mot de passe est bon, on exécute la boucle...

For i = 1 To Sheets.Count

Sheets(i).Unprotect "chloe"

Next i

Else: MsgBox ("Mauvais mot de passe.")

End If

End Sub

A+

Jéjé62600

Rechercher des sujets similaires à "protection feuilles"