Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Deja ouvert , sur sharepoint

pbblois

XLDnaute Nouveau
Bonjour a tous ,
je cherche le moyen d'indiquer a l'utilisateur que le fichier excel qu'il vient d'ouvrir est deja ouvert par une autre personne .
Ce fichier excel est sur un sharepoint , et parfois mappé sur le pc des utilisateurs et donc visible dans le file explorer .
Par avance merci
 

kiki29

XLDnaute Barbatruc
Salut, à adapter à ton contexte
VB:
Option Explicit

Sub Tst()
Dim sChemin As String
    sChemin = ThisWorkbook.Path
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = sChemin & "\"
        .Title = "Sélectionner le Fichier"
        .AllowMultiSelect = False
        .InitialView = msoFileDialogViewDetails
        .ButtonName = "Sélection Fichier"
        .Show
        If .SelectedItems.Count > 0 Then
            DoEvents
            TestIsFileOpen .SelectedItems(1)
        End If
    End With
End Sub

Private Sub TestIsFileOpen(sFichier As String) 
    If IsFileOpen(sFichier) Then
        MsgBox "File already in use!"
    Else
        MsgBox "File not in use!"
        'Workbooks.Open sFichier
    End If
End Sub

Private Function IsFileOpen(filename As String) As Boolean
Dim filenum As Integer, errnum As Integer

    On Error Resume Next
    filenum = FreeFile()

    Open filename For Input Lock Read As #filenum
    Close filenum
    errnum = Err
    On Error GoTo 0

    Select Case errnum
        Case 0
            IsFileOpen = False
        Case 70
            IsFileOpen = True
        Case Else
            Error errnum
    End Select
End Function

' Brutal .....
Private Function IsFileOpenLight(filename As String) As Boolean
Dim fichier As Integer
    On Error Resume Next

    fichier = FreeFile()
    Open filename For Input Access Read Lock Read Write As fichier

    If Err.Number = 0 Then
        IsFileOpenLight = False
        Close fichier
    Else
        IsFileOpenLight = True
    End If
End Function
 
Dernière édition:

pbblois

XLDnaute Nouveau


Presque Super
Comment je peux faire pour ne pas a avoir a selectioner un fichier ? que cela controle toujours le meme fichier ? en l'occurence , celui avec ce bout de code.
 

kiki29

XLDnaute Barbatruc
Re, allons, quand même ...
....
TestIsFileOpen .SelectedItems(1)
....
Remplacer .SelectedItems(1) par ton chemin complet du fichier concerné, puis placer cette procédure à l'endroit idoine. Bref une syntaxe du genre :
VB:
TestIsFileOpen "C:\gnagna\Faq_VBA\Exemples\gnagna.xlsb"
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
323
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…