Aug 17 2021 05:32 AM
Bonjour,
je cherche à créer une macro qui compte le nombre de collaborateur sur un même fichier Excel.
Cette macro servirait à avertir les utilisateurs si une autre personne utilise ce même classeur pour éviter que plusieurs personne travail sur ce fichier.
Merci par avance de votre réponse.
Aug 17 2021 12:35 PM
You can use VBA to find out whether a file is already in use, but unfortunately not by whom
... as far as I know (even if that doesn't mean much :)).
With this code you can see if the file is open or not.
Sub test()
If IsWorkbookOpen("Mappe2.xls") Then
MsgBox "OPEN"
Else
MsgBox "CLOSE"
End If
End Sub
I would be happy to know if I could help.
NikolinoDE
I know I don't know anything (Socrates)
* Kindly Mark and Vote this reply if it helps please, as it will be beneficial to more Community members reading here.
Aug 18 2021 01:08 AM
Merci pour votre réponse, mais le problème est qu'il faut créé la fonction IsWorkbookOpen.
Sur internet, j'ai trouvé ce code mais sa ne marche pas pour le moment.
Private Function IsWorkbookOpen(wbname) As Boolean
Dim wBook As Workbook
Set wBook = Nothing
On Error Resume Next
Set wBook = Workbooks(wbname)
If wBook Is Nothing Then
IsWorkbookOpen = False
Else: IsWorkbookOpen = True
End If
End Function
seriez vous me dire pourquoi cela n'a pas fonctionner ou auriez vous un code qui fonctionne ?
Aug 18 2021 03:01 AM
Ce texte a été traduit automatiquement, l'utilisateur ne parle pas cette langue.
Vous devez inclure le nom de votre fichier dans votre code. Le fichier que vous voulez voir s'il est ouvert ou non.
Non testé sur Internet : Vous pouvez utiliser le code VBA suivant pour vérifier si le classeur actuel est ouvert ou non.
Sub Informations_utilisateur ()
'Si vous voulez l'avoir automatiquement lorsque vous ouvrez le fichier, ajoutez "Auto_Open ()" comme titre
Dim Wb As Workbook: Set Wb = Workbooks("Ledossierapprouvé.xlsx")
MsgBox " Attention : il utilise actuellement " & UBound(Wb.UserStatus) & _
" Personne(s) ce dossier!", vbInformation
End Sub
Ce code est appelé à partir d'un autre classeur, vous pouvez donc voir si le classeur partagé est ouvert ou non.
Veuillez suivre ces instructions.
Bouton Insérer dans le classeur :
Ouvrez Excel et sélectionnez l'onglet Développeur en haut. Cliquez sur "Insérer" là-bas.
Pour les champs, cliquez sur le premier symbole pour insérer un bouton.
Sélectionnez la position du bouton dans votre classeur et maintenez le bouton gauche de la souris enfoncé pour déterminer la taille. Cela peut être modifié plus tard.
La fenêtre "Attribuer une macro" s'ouvre maintenant. Cliquez sur une macro préalablement définie.
Merci pour votre patience et votre temps.
Nikolino
Je sais que je ne sais rien (Socrate)
Aug 18 2021 07:11 AM
Merci pour ces informations, elles m’ont été très utiles. Cependant, il se passe quelque chose de très étrange : j'ai mis mon fichier Excel sur un SharePoint, mais la fonction "UBound(Wb.UserStatus)" ne trouve que le profil de la personne qui ouvre le fichier.
Pour faire des essaies, j'ai trouvé des codes sur internet comme celui-ci.
Sub test5()
Dim boucle As Integer
Dim Affiche As String
Users = ActiveWorkbook.UserStatus
For boucle = 1 To UBound(Users)
Affiche = Affiche & Users(boucle, 1) & vbTab & CDate(Users(boucle, 2)) & vbCrLf
Next boucle
MsgBox Affiche, vbInformation, "Utilisateurs connectés :"
End Sub
Ce code devrait afficher toutes les personnes actuellement connectées sur le fichier, mais la seule information qu'il me donne est mon nom et l'heure de ma connexion. Il ne montre pas mes collègues connectées au même moment sur ce fichier.
Quand je leur demande d’essayer à leur tour sur leur ordinateur, il se passe la même chose ?
Cela n'est-il pas étrange ?
Aug 18 2021 08:20 AM
SolutionAutant que je me souvienne, seul le premier peut être affiché sous sharepoint.
Pour autant que je me souvienne, il n'y a aucun moyen de voir tous les utilisateurs, pas seulement sous sharepoint.
Cela signifie que vous pouvez toujours voir le premier des classeurs ouvert.
Mais s'il en affiche toujours un, cela signifie que le fichier est ouvert.
Pour faire court, il n'y a aucun moyen de voir tous les utilisateurs à la fois avec VBA, personnellement je ne connais pas d'autre moyen avec office.
Thank you for your understanding and patience
Nikolino
I know I don't know anything (Socrates)
Aug 18 2021 08:20 AM
SolutionAutant que je me souvienne, seul le premier peut être affiché sous sharepoint.
Pour autant que je me souvienne, il n'y a aucun moyen de voir tous les utilisateurs, pas seulement sous sharepoint.
Cela signifie que vous pouvez toujours voir le premier des classeurs ouvert.
Mais s'il en affiche toujours un, cela signifie que le fichier est ouvert.
Pour faire court, il n'y a aucun moyen de voir tous les utilisateurs à la fois avec VBA, personnellement je ne connais pas d'autre moyen avec office.
Thank you for your understanding and patience
Nikolino
I know I don't know anything (Socrates)