Permettre la modification des plages en mode partgé

Bonjour

Selon la majorité des réponse sur le NET que j'ai consulter : la protection de la feuille ne peut être activer/désactiver qu'en mode exclusif. (Donc on ne peut pas verrouillé/déverrouillé des cellules avec VBA en mode partagé avec les commande ci-dessous).

ActiveSheet.Unprotect
Range("Q5:AC1000").Locked = True
Columns("Q5:AC1000").Locked = True
ActiveSheet.protect

Par contre l'option Permettre la modification des plages reste accessible même en mode partagé. Donc je me demande s'il est possible d'effectuer ce verrouillage en VBA au lieu de l'interface Excel.

Merci d'avance.

Cordialement.

partage

Salut XEONTEL,

il y a moyen moyen de proteger un onglet que pour l'utilisateur en utilisant cette syntaxe:

Sheets("ton_Onglet").Protect UserInterFaceOnly:=True

Pour faire ca:

1- Il faut premierement déprotéger l'onglet manuellement et puis le protéger à l'aide du code vba

Sheets("ton_Onglet").Protect UserInterFaceOnly:=True

maintenant l'onglet est donc protégé pour les utilisateurs mais pas pour les macros

2- aprés ca dans ton code t'as plus besoin d'utiliser ( .Unprotect et .Protect) :

Range("Q5:AC1000").Locked = True
Columns("Q5:AC1000").Locked = True

Bonne nuit

Merci m3ellem1 pour cette solution, pour préciser il ne faut rien mettre avant d'utiliser protect.

Par contre y a un truc qui m’intrigue, en mode exclusif tous marche parfaitement. Mais quand je partage le fichier un message d'erreur apparais a l'ouverture.

Selon le débogage ( Columns et Range ) semble causé l'erreur.

Private Sub Workbook_Open()

ActiveSheet.Protect "Delta!7604@", UserInterfaceOnly:=True

Range("Q:AC").EntireColumn.Hidden = True

Range("C5:IJ1004").Locked = True

Dim mot_de_passe As String

mot_de_passe = InputBox("MOT DE PASSE SESSION")

GoTo MDPS

MDPX:

mot_de_passe = InputBox("MOT DE PASSE INCORRECT ESSAYER DE NOUVEAU")

MDPS:

If mot_de_passe = "NTA5653" Then

Range("Q:AC,AD:BN,BO:CY,CZ:EJ,GR:GW,IB:IF").EntireColumn.Hidden = False
Range("C5:G1004,I5:I1004,L5:L1004,N5:P1004,FX5:FY1004,GY5:GZ1004,IH5:IH1004").Locked = False

Exit Sub
End If

If mot_de_passe = "NTO1533" Then

Columns("Q:AC").EntireColumn.Hidden = False

Exit Sub
End If
End Sub

Slt XEONTEL,

chez moi ca fonctionne sans message d'erreur.

c'est quoi comme message d'erreur?

est ce possible de voir une copie du fichier?

Bonjour M3ellem1

Désole pour le retard j’étais en vacances, merci de trouver ci-joint une copie du fichier ( du a la limitation de la taille du fichier sur le forum j'ai mis seulement le code vba )

Merci d'avance pour ton aide.

Cordialement.

1004
6tdb-shared.xlsm (647.69 Ko)

Slt XEONTEL,

pas de soucis, de temps en temps on a besoin de vacances pour se reposer et sortir de la routine.

à tester

11tdb-shared-v1.xlsm (646.26 Ko)

Bonne soirée

Edit:

Voici une autre version

il faut laisser aumoins une boucle if avec un mot de passe mais sans "ActiveSheet.Protect "Delta!7604@", UserInterfaceOnly:=True" pour pouvoir desactiver le partage et accéder au code VBA

Le code VBA est protégé par le mdp Delta!7604@

Dans notre cas pour desactiver le partage il y a 2 mdp: NTA5653 et NTO1533

8tdb-shared-v2.xlsm (648.61 Ko)

à la prochaine

Bonsoir M3ellem, merci pour cette réflexion, j'ai aussi essayer cette solution qui plus au moins contourne le blocage, l'inconvénient de cette approche, c'est qu'elle rend le fichier en mode lecture/écriture pour le 1er utilisateur a l'ouvrir et par la suite en mode lecture seulement pour tous les autres.

Donc a priori le seul moyen c'est de passer par l'interface Excel [ Permettre la modification des plages ].

Au moins on a essayer, merci encore.

Rechercher des sujets similaires à "permettre modification plages mode partge"