Par VBA , je traite un grand nombre de fichiers Excel en réseau (ouverture,
copie de données, modif, déplacement...)
Bien évidemement, il peut arriver que certains fichiers soietn ouverts par
d'autres utilisateurs...Mon prog ouvre donc en lecture seule et ne fait pas
tout ce que je souhaite.
Y a t il moyen de forcer l'ouverture en écriture quitte à virer l'autre
utilisateur de sa cession Excel???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Starwing
Bonjour Air-1,
Y a t il moyen de forcer l'ouverture en écriture quitte à virer l'autre utilisateur de sa cession Excel???
Exemple de Michel Pierron: au 27 mars 2003
Tu dois t'assurer auparavant que le classeur n'est pas déjà ouvert par un utilisateur et si oui, les prévenir. Pour ce faire tu dois connaître la liste des utilisateurs actuels avant d'en retirer le partage pour modifier les macros, avec une procédure qui ne s'affiche que lorsque c'est toi qui ouvre le classeur en question en faisant référence à ton nom d'utilisateur ou de loggin; peut être avec quelque chose du genre (procédure exemple avec nom d'utilisateur):
Dans le module ThisWorkbook du classeur Private Sub Workbook_Open() Const MonNom As String = "Ton nom d'utilisateur"
If LCase(Application.UserName) = MonNom Then UsersList End Sub
Private Sub UsersList() Dim users, msg As String, status As String
users = ThisWorkbook.UserStatus For Row = 1 To UBound(users, 1) msg = msg & users(Row, 1) & " " & Format(users(Row, 2), "dd/mm/yy h:mm") & " " If users(Row, 3) = 1 Then status = "(Exclusive mode)" Else status = "(Shared mode)" msg = msg & status & vbLf Next MsgBox msg, 64 End Sub
Nota: Cette méthode ne renverra pas les utilisateurs ayant ouvert le classeur en lecture seule puisque par définition un enregistrement conduirait à un nom différent.
Starwing
Bonjour Air-1,
Y a t il moyen de forcer l'ouverture en écriture quitte à
virer l'autre utilisateur de sa cession Excel???
Exemple de Michel Pierron:
au 27 mars 2003
Tu dois t'assurer auparavant que le classeur n'est pas
déjà ouvert par un utilisateur et si oui, les prévenir.
Pour ce faire tu dois connaître la liste des utilisateurs
actuels avant d'en retirer le partage pour modifier les
macros, avec une procédure qui ne s'affiche que lorsque
c'est toi qui ouvre le classeur en question en faisant
référence à ton nom d'utilisateur ou de loggin; peut être
avec quelque chose du genre (procédure exemple avec nom
d'utilisateur):
Dans le module ThisWorkbook du classeur
Private Sub Workbook_Open()
Const MonNom As String = "Ton nom d'utilisateur"
If LCase(Application.UserName) = MonNom Then UsersList
End Sub
Private Sub UsersList()
Dim users, msg As String, status As String
users = ThisWorkbook.UserStatus
For Row = 1 To UBound(users, 1)
msg = msg & users(Row, 1) & " " & Format(users(Row,
2), "dd/mm/yy h:mm")
& " "
If users(Row, 3) = 1 Then status = "(Exclusive mode)"
Else status =
"(Shared mode)"
msg = msg & status & vbLf
Next
MsgBox msg, 64
End Sub
Nota: Cette méthode ne renverra pas les utilisateurs ayant
ouvert le classeur en lecture seule puisque par définition
un enregistrement conduirait à un nom différent.
Y a t il moyen de forcer l'ouverture en écriture quitte à virer l'autre utilisateur de sa cession Excel???
Exemple de Michel Pierron: au 27 mars 2003
Tu dois t'assurer auparavant que le classeur n'est pas déjà ouvert par un utilisateur et si oui, les prévenir. Pour ce faire tu dois connaître la liste des utilisateurs actuels avant d'en retirer le partage pour modifier les macros, avec une procédure qui ne s'affiche que lorsque c'est toi qui ouvre le classeur en question en faisant référence à ton nom d'utilisateur ou de loggin; peut être avec quelque chose du genre (procédure exemple avec nom d'utilisateur):
Dans le module ThisWorkbook du classeur Private Sub Workbook_Open() Const MonNom As String = "Ton nom d'utilisateur"
If LCase(Application.UserName) = MonNom Then UsersList End Sub
Private Sub UsersList() Dim users, msg As String, status As String
users = ThisWorkbook.UserStatus For Row = 1 To UBound(users, 1) msg = msg & users(Row, 1) & " " & Format(users(Row, 2), "dd/mm/yy h:mm") & " " If users(Row, 3) = 1 Then status = "(Exclusive mode)" Else status = "(Shared mode)" msg = msg & status & vbLf Next MsgBox msg, 64 End Sub
Nota: Cette méthode ne renverra pas les utilisateurs ayant ouvert le classeur en lecture seule puisque par définition un enregistrement conduirait à un nom différent.