Lecture seule et identification

Esox

XLDnaute Occasionnel
Bonjour le forum,

Mon fichier s'ouvre par défaut en lecture seule forcée au démarrage, ce qui permet aux utilisateurs de ne pas se monter dessus. Et lorsqu'un utilisateur veut modifier le fichier, il doit s'identifier, ce qui m'ote la protection et la lecture seule.
Par contre, lorsqu'un utilisateur est déjà identifier Excel me stipule par boite de dialogue avec 2 choix "notifier" et "annuler", si je clique sur une des deux options il me laisse bien le fichier en lecture seule, mais me dévérouille le classeur.
J'aimerais donc une traduction VBA de ce qui suit :

si classeur utilisé en modification par un autre utilisateur, alors fin de la macro ?

Merci pour votre aide...
 

Esox

XLDnaute Occasionnel
Re : Lecture seule et identification

En fait voici mon code :
Sub administrateur()

On Error GoTo fin
Application.ScreenUpdating = False
mp = InputBox("Mot de passe ?")
If mp = "toto" Then
Sheets("1er semestre").Select
ActiveSheet.Unprotect Password:="tyty"
Sheets("2nd semestre").Select
ActiveSheet.Unprotect Password:="tyty"
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True
End If
Application.ScreenUpdating = True
fin:
If Error = 1004 Then End
End Sub

Donc c'est qu'à l'ouverture du fichier de toute facon celui ci passe en lecture seule, aussi je ne peux pas mettre ta ligne de commande. Il faudrait qu'il me renvoi fin de macro si quelqu un est en modification ou si le message "notifier" "annuler" apparait...
 

francedemo

XLDnaute Occasionnel
Re : Lecture seule et identification

bon, alors, une macro qui doit se lancer à l'ouverture du fichier, il vaut mieux la mettre dans "ThisWorkbook"
ensuite, utiliser "Sub WorkBook_Open()"
tu affiches ton inputbox pour le mdp
tu vérifie que tu n'es pas en lecture seule
tu lances la macro

ça pourrait donner un truc du genre:
Code:
Sub WorkBook_Open()

  Application.ScreenUpdating = False
  mp = InputBox("Mot de passe ?")
  If thisworkbook.readonly = false and mp = "toto" Then
      Sheets("1er semestre").Unprotect Password:="tyty"
      Sheets("2nd semestre").Unprotect Password:="tyty"
  End If
 Application.ScreenUpdating = True

End Sub

à tester...
à +
 

Esox

XLDnaute Occasionnel
Re : Lecture seule et identification

oups, je m'exprime très mal en fait j'ai :
Private Sub Workbook_Open()
On Error GoTo fin
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
fin:
If Error = 1004 Then End
End Sub

et j'ai une macro pour s'identifier si besoin de modifier (celle que j'ai décrite plus haut).
Donc au démarrage, mon fichier passe en lecture seule.
Si je dois intervenir sur mon fichier, je cique sur bouton qui lance macro d'identication. Je m'identifie, pas de souci, il m'ote la lecture et la protection.

Par contre, si nous etions 2 en meme tps sur le fichier, un s'identifie, pas de problème, mais si un second tente de s'identifier, il y a alors boite de dialogue avec notifier et annuler, et là, si je clique sur l'un ou l'autre choix, mon fichier reste bien en lecture seule, mais il se dévérouille malgré tout. Y a t il un "IF" fichier déjà ouvert pour modification "exit sub" ?

J'espère avoir été plus clair... encore désolé ... et encore merci de votre aide

Stef
 
Dernière édition:

francedemo

XLDnaute Occasionnel
Re : Lecture seule et identification

après réflexion...

je mettrai "ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True" juste après ton "If mp = "toto" Then"
du coup, tu fais la demande pour modifier, tu dois donner le bon mdp et après, on vérifie si le fichier peut être ouvert en Lect-Ecriture, si erreur go to fin...

à tester, je ne sais pas si ça fonctionne
 

Esox

XLDnaute Occasionnel
Re : Lecture seule et identification

Bonjour le forum, francedemo,

Bon malheureusement cela ne fonctionne pas, j'ai toujours la fenetre "notifier" "annuler", etquelque soit mon choix, cela laisse bien le fichier en lecture seule, mais dévérouille mes feuilles, ce que je ne veux pas. Voici une récap de ma macro :

Sub administrateur()
On Error GoTo fin
Application.ScreenUpdating = False
mp = InputBox("Mot de passe ?")
If mp = "toto" Then
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True
Sheets("1er semestre").Select
ActiveSheet.Unprotect Password:="tyty"
Sheets("2nd semestre").Select
ActiveSheet.Unprotect Password:="tyty"
End If
Application.ScreenUpdating = True
fin:
If Error <> 0 Then Exit Sub
End Sub

Si quelqu'un a une idée...
Merci bcp....
 

francedemo

XLDnaute Occasionnel
Re : Lecture seule et identification

peux tu essayer ça ?

Code:
Option Explicit
Sub administrateur()

Dim MdP As String

Application.ScreenUpdating = False

On Error GoTo fin
MdP = InputBox("Mot de passe ?")

If MdP = "toto" Then
   With ActiveWorkbook
      If Not .WriteReservedBy = "" Then
         .ChangeFileAccess Mode:=xlReadWrite, Notify:=True
         Sheets("1er semestre").Unprotect Password:="tyty"
         Sheets("2nd semestre").Unprotect Password:="tyty"
      End If
   End With
End If

fin:
If Error <> 0 Then Exit Sub

Application.ScreenUpdating = True

End Sub
(pas testé)
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 457
Membres
103 219
dernier inscrit
Akyrah