Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Avertissement fichier est verrouillé pour modification par

5 réponses
Avatar
rmill...
Bonjour,

Si un fichier est déjÍ  ouvert par un autre utilisateur et que je tente de l'ouvrir j'obtiens un message Í  l'effet que le fichier est verrouillé pour modification par l'autre utilisateur. Et c'est parfait.

Mais lorsque j'ouvre le fichier par code VBA je n'obtiens pas ce message. Je souhaiterais bien que oui. J'ai placé le code ci-dessous ... très simple.

Selon vous y a t'il moyen de l'obtenir mais en l'ouvrant par VBA? Merci Í  l'avance.

'********************************************************

Workbooks.Open ThisWorkbook.Sheets(Feuil1.Name).Range("CN_ValidXLCaseModelPath").Value, Password:=Feuil1.Range("CN_ValidXLCasePwd").Value

5 réponses

Avatar
MichD
Le 23/11/20 Í  22:08, a écrit :
Bonjour,
Si un fichier est déjÍ  ouvert par un autre utilisateur et que je tente de l'ouvrir j'obtiens un message Í  l'effet que le fichier est verrouillé pour modification par l'autre utilisateur. Et c'est parfait.
Mais lorsque j'ouvre le fichier par code VBA je n'obtiens pas ce message. Je souhaiterais bien que oui. J'ai placé le code ci-dessous ... très simple.
Selon vous y a t'il moyen de l'obtenir mais en l'ouvrant par VBA? Merci Í  l'avance.
'********************************************************
Workbooks.Open ThisWorkbook.Sheets(Feuil1.Name).Range("CN_ValidXLCaseModelPath").Value, Password:þuil1.Range("CN_ValidXLCasePwd").Value

Bonjour,
Regarde ce fichier https://www.cjoint.com/c/JKymvxiNEUj
Tu peux définir directement dans le code, le message que tu veux
afficher lorsque tu ouvres un fichier déjÍ  ouvert.
À tester!
MichD
Avatar
MichD
Le 24/11/20 Í  07:24, MichD a écrit :
Le 23/11/20 Í  22:08, a écrit :
Bonjour,
Si un fichier est déjÍ  ouvert par un autre utilisateur et que je tente
de l'ouvrir j'obtiens un message Í  l'effet que le fichier est
verrouillé pour modification par l'autre utilisateur. Et c'est parfait.
Mais lorsque j'ouvre le fichier par code VBA je n'obtiens pas ce
message. Je souhaiterais bien que oui.  J'ai placé le code ci-dessous
... très simple.
Selon vous y a t'il moyen de l'obtenir mais en l'ouvrant par VBA?
Merci Í  l'avance.
'********************************************************
Workbooks.Open
ThisWorkbook.Sheets(Feuil1.Name).Range("CN_ValidXLCaseModelPath").Value,
Password:þuil1.Range("CN_ValidXLCasePwd").Value

Bonjour,
Regarde ce fichier https://www.cjoint.com/c/JKymvxiNEUj
Tu peux définir directement dans le code, le message que tu veux
afficher lorsque tu ouvres un fichier déjÍ  ouvert.
À tester!
MichD

Cette version est probablement meilleure!
Un bout de code dans le module standard et dans le Thisworkbook
ttps://www.cjoint.com/c/JKynucZ63vj
MichD
Avatar
MichD
Le 24/11/20 Í  08:22, MichD a écrit :
Le 24/11/20 Í  07:24, MichD a écrit :
Le 23/11/20 Í  22:08, a écrit :
Bonjour,
Si un fichier est déjÍ  ouvert par un autre utilisateur et que je
tente de l'ouvrir j'obtiens un message Í  l'effet que le fichier est
verrouillé pour modification par l'autre utilisateur. Et c'est parfait.
Mais lorsque j'ouvre le fichier par code VBA je n'obtiens pas ce
message. Je souhaiterais bien que oui.  J'ai placé le code ci-dessous
... très simple.
Selon vous y a t'il moyen de l'obtenir mais en l'ouvrant par VBA?
Merci Í  l'avance.
'********************************************************
Workbooks.Open
ThisWorkbook.Sheets(Feuil1.Name).Range("CN_ValidXLCaseModelPath").Value,
Password:þuil1.Range("CN_ValidXLCasePwd").Value

Bonjour,
Regarde ce fichier https://www.cjoint.com/c/JKymvxiNEUj
Tu peux définir directement dans le code, le message que tu veux
afficher lorsque tu ouvres un fichier déjÍ  ouvert.
À tester!
MichD

Cette version est probablement meilleure!
Un bout de code dans le module standard et dans le Thisworkbook
https://www.cjoint.com/c/JKynucZ63vj
MichD

La procédure dans le ThisWorkbook de ce fichier
https://www.cjoint.com/c/JKynucZ63vj devrait plutÍ´t être celle-ci :
'--------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If IsFileOpen(ThisWorkbook.Name) Then
MsgBox "Ce fichier est en lecture seule", vbCritical + vbOKOnly,
"Attention"
Else
If ThisWorkbook.ReadOnly Then
ThisWorkbook.ChangeFileAccess xlReadWrite
End If
End If
End Sub
'--------------------------
MichD
Avatar
MichD
Avant ta ligne de code qui ouvre le fichier, tu vérifies si le fichier
est ouvert ailleurs, si oui, tu affiches le message que tu désires et
préviens l'usager. DéjÍ , tu sais que le fichier sera en lecture seule
s'il existe déjÍ  une copie déjÍ  ouverte.
La difficulté que présente ce type de fichier provient au moment
d'enregistrer les modifications.
Dans l'événement approprié dans le ThisWorkbook (before save), tu testes
Í  nouveau si le fichier est toujours ouvert dans une autre instance
d'Excel, par la négative tu modifies l'état du fichier en mode lecture
seule pour le mode "ReadWrite", suivi de la sauvegarde.
La fenêtre de "Notification" se produit avant l'ouverture du classeur.
En vba, tu ouvres directement le classeur avant que la fenêtre de
notification ait eu la chance de se manifester.
Comme je n'ai jamais travaillé en réseau, je n'ai jamais eu Í  trouver le
nom de l'usager qui avait déjÍ  ouvert un fichier particulier dans une
autre instance d'Excel.
Bonne continuation!
MichD
Avatar
rmill...
Un grand merci. Cela m'est bien utile.