OVH Cloud OVH Cloud

Problème pour protéger et déprotéger un classeur

1 réponse
Avatar
escoune
J'ai une nouvelle fois besoin de votre aide ^^

Alors voil=E0, =E0 travers un bouton situ=E9 dans le classeur n=B01,
j'envoie des donn=E9es dans un classeur n=B02 qui est prot=E9g=E9 en
=E9criture avec le mdp "password".

Or mon probl=E8me, c'est qu'apr=E8s avoir =E9crit les donn=E9es (tout va
bien jusque l=E0) l'utilisateur peut encore modifier le classeur n=B02 et
le sauvegarder! (chose qu'il faut que j'emp=EAche)

Pourtant je reprot=E8ge bien mon classeur

Merci d'avance :)

Benj

PS : Voici le code que j'utilise :

If NomClasseur =3D "" Then
Alerte =3D MsgBox("Vous n'avez pas rempli le num=E9ro du dossier", 16,
"Num=E9rio de dossier non valide")
Else
'Activer le fichier =3D=3D> sinon l'ouvrir
On Error Resume Next
Workbooks("fichier partage.xls").Activate
If Err <> 0 Then
fichier =3D "R:\DPE\Projet\fichier partage.xls"
Workbooks.Open Filename:=3Dfichier, WriteResPassword:=3D"password"
End If

'On enleve la protection
Workbooks("fichier partage.xls").Unprotect ("password")

'On regarde si le dossier est dans les dossiers en cours
For k =3D 2 To Workbooks("fichier partage.xls").Worksheets("Dossiers
en cours").Range("A65536").End(xlUp).Row
If Workbooks("fichier partage.xls").Worksheets("Dossiers en
cours").Cells(k, 1) =3D NomClasseur Then Trouve =3D True
Next k

'Si le fichier est pr=E9sent on recherche dans les t=E2ches toutes
les t=E2ches qui correspondent =E0 ce dossier et on les efface
If Trouve =3D True Then
For k =3D Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A65536").End(xlUp).Row To 2
Step -1
If Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(k, 1) =3D NomClasseur Then
Workbooks("fichier partage.xls").Worksheets("Taches").Range("A" & k &
":I" & k).Delete Shift:=3DxlShiftUp
Next k
End If

'On r=E9cup=E8re toutes les t=E2ches et on les met dans le fichier
partage
Fin =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Range("A65536").End(xlUp).Row

For k =3D Debut To Fin
'On copie les infos
Fin2 =3D Workbooks("fichier
partage.xls").Worksheets("Taches").Range("B65536").End(xlUp).Offset(1,
0).Row

Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 1) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(1, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 2) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 1)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 3) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 4) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 4)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 5) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 6)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 6) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(2, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 7) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(4, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 8) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(5, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 9) =3D
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(1, 4)

'On ajoute le lien hypertexte vers le dossier
Activesheets.Hyperlinks.Add Anchor:=3DCells(Fin2, 1),
Address:=3DNomDuFichier
Next k

'On met les couleurs
For k =3D 2 To Workbooks("fichier
partage.xls").Worksheets("Taches").Range("B65536").End(xlUp).Row
If Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(k, 5) =3D "F" Then
Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A" & k & ":I" & k).Delete
Shift:=3DxlShiftUp
ElseIf Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(k, 5) =3D "NF" And
Workbooks("fichier partage.xls").Worksheets("Taches").Cells(k, 2) <=3D
Date Then
Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A" & k & ":I" &
k).Interior.ColorIndex =3D 3
Else:
Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A" & k & ":I" &
k).Interior.Color =3D RGB(255, 240, 100)
End If
Next k

'On met le dossier dans les dossiers en cours si il n'y est pas
d=E9j=E0
If Trouve =3D False Then Workbooks("fichier
partage.xls").Worksheets("Dossiers en
cours").Range("A65536").End(xlUp).Offset(1, 0) =3D NomClasseur
'On sauvegarde le fichier
Workbooks("fichier partage.xls").Save
'On remet la protection
Workbooks("fichier partage.xls").Protect ("password")
=20
End If

1 réponse

Avatar
escoune
Excusez moi de vous avoir déranger, je viens de trouver mon erreur
tout seul ^^
Je protéger uniquement le classeur contre la suppression de feuille et
non les feuilles contre la modification de leur contenu.



J'ai une nouvelle fois besoin de votre aide ^^

Alors voilà, à travers un bouton situé dans le classeur n°1,
j'envoie des données dans un classeur n°2 qui est protégé en
écriture avec le mdp "password".

Or mon problème, c'est qu'après avoir écrit les données (tout va
bien jusque là) l'utilisateur peut encore modifier le classeur n°2 et
le sauvegarder! (chose qu'il faut que j'empêche)

Pourtant je reprotège bien mon classeur

Merci d'avance :)

Benj

PS : Voici le code que j'utilise :

If NomClasseur = "" Then
Alerte = MsgBox("Vous n'avez pas rempli le numéro du dossier", 16,
"Numério de dossier non valide")
Else
'Activer le fichier ==> sinon l'ouvrir
On Error Resume Next
Workbooks("fichier partage.xls").Activate
If Err <> 0 Then
fichier = "R:DPEProjetfichier partage.xls"
Workbooks.Open Filename:=fichier, WriteResPassword:="password"
End If

'On enleve la protection
Workbooks("fichier partage.xls").Unprotect ("password")

'On regarde si le dossier est dans les dossiers en cours
For k = 2 To Workbooks("fichier partage.xls").Worksheets("Dossiers
en cours").Range("A65536").End(xlUp).Row
If Workbooks("fichier partage.xls").Worksheets("Dossiers en
cours").Cells(k, 1) = NomClasseur Then Trouve = True
Next k

'Si le fichier est présent on recherche dans les tâches toutes
les tâches qui correspondent à ce dossier et on les efface
If Trouve = True Then
For k = Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A65536").End(xlUp).Row To 2
Step -1
If Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(k, 1) = NomClasseur Then
Workbooks("fichier partage.xls").Worksheets("Taches").Range("A" & k &
":I" & k).Delete Shift:=xlShiftUp
Next k
End If

'On récupère toutes les tâches et on les met dans le fichier
partage
Fin =
Workbooks(NomDuFichier).Worksheets("Dossier").Range("A65536").End(xlUp).R ow

For k = Debut To Fin
'On copie les infos
Fin2 = Workbooks("fichier
partage.xls").Worksheets("Taches").Range("B65536").End(xlUp).Offset(1,
0).Row

Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 1) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(1, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 2) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 1)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 3) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 4) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 4)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 5) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(k, 6)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 6) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(2, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 7) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(4, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 8) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(5, 2)
Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(Fin2, 9) =
Workbooks(NomDuFichier).Worksheets("Dossier").Cells(1, 4)

'On ajoute le lien hypertexte vers le dossier
Activesheets.Hyperlinks.Add Anchor:Îlls(Fin2, 1),
Address:=NomDuFichier
Next k

'On met les couleurs
For k = 2 To Workbooks("fichier
partage.xls").Worksheets("Taches").Range("B65536").End(xlUp).Row
If Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(k, 5) = "F" Then
Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A" & k & ":I" & k).Delete
Shift:=xlShiftUp
ElseIf Workbooks("fichier
partage.xls").Worksheets("Taches").Cells(k, 5) = "NF" And
Workbooks("fichier partage.xls").Worksheets("Taches").Cells(k, 2) <=
Date Then
Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A" & k & ":I" &
k).Interior.ColorIndex = 3
Else:
Workbooks("fichier
partage.xls").Worksheets("Taches").Range("A" & k & ":I" &
k).Interior.Color = RGB(255, 240, 100)
End If
Next k

'On met le dossier dans les dossiers en cours si il n'y est pas
déjà
If Trouve = False Then Workbooks("fichier
partage.xls").Worksheets("Dossiers en
cours").Range("A65536").End(xlUp).Offset(1, 0) = NomClasseur
'On sauvegarde le fichier
Workbooks("fichier partage.xls").Save
'On remet la protection
Workbooks("fichier partage.xls").Protect ("password")

End If