Besoin d'une alerte "fichier déjà ouvert" Excel 2003
Résolu
HIBISCUS988
Messages postés
33
Statut
Membre
-
HIBISCUS988 Messages postés 33 Statut Membre -
HIBISCUS988 Messages postés 33 Statut Membre -
Bonjour,
J'ai mis en place un registre d'enregistrement de courrier "départ" et arrivée", sur fichier Excel 2003, qui est accessible à tout le service (serveur).
Le soucis aujourd'hui, c'est que lorsque le fichier est déjà ouvert par un un utilisateur, il n'y a aucune alerte lorsqu'un 2ème utilisateur ouvre le fichier. Du coup, beaucoup d'enregistrements sont perdus car toutes les modifications ne sont pas enregistrées. Donc gros gros soucis. J'ai essayé avec un code VBA ci-dessous, en faisant l'essai sur mon pc, en ouvrant 2 fois le fichier, la 2ème fois j'avais bien une alerte. Mais en demandant à un collègue d'ouvrir le fichier alors qu'il était déjà ouvert chez moi, il n'avait pas d'alerte. Si vous pouviez m'aider à trouver une solution ça serait super sympa. Merci d'avance pour vos messages.
ESSAI ne fonctionnant pas :
Private Sub Workbook_Open()
If ActiveWorkbook.ReadOnly = True Then
MsgBox "Fichier déjà ouvert. Essayez plus tard!", vbInformation, "Fichier déjà ouvert"
ActiveWorkbook.Close
End If
End Sub
J'ai mis en place un registre d'enregistrement de courrier "départ" et arrivée", sur fichier Excel 2003, qui est accessible à tout le service (serveur).
Le soucis aujourd'hui, c'est que lorsque le fichier est déjà ouvert par un un utilisateur, il n'y a aucune alerte lorsqu'un 2ème utilisateur ouvre le fichier. Du coup, beaucoup d'enregistrements sont perdus car toutes les modifications ne sont pas enregistrées. Donc gros gros soucis. J'ai essayé avec un code VBA ci-dessous, en faisant l'essai sur mon pc, en ouvrant 2 fois le fichier, la 2ème fois j'avais bien une alerte. Mais en demandant à un collègue d'ouvrir le fichier alors qu'il était déjà ouvert chez moi, il n'avait pas d'alerte. Si vous pouviez m'aider à trouver une solution ça serait super sympa. Merci d'avance pour vos messages.
ESSAI ne fonctionnant pas :
Private Sub Workbook_Open()
If ActiveWorkbook.ReadOnly = True Then
MsgBox "Fichier déjà ouvert. Essayez plus tard!", vbInformation, "Fichier déjà ouvert"
ActiveWorkbook.Close
End If
End Sub
A voir également:
- Besoin d'une alerte "fichier déjà ouvert" Excel 2003
- Fichier bin - Guide
- Fichier epub - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
Bonjour,
J’utilise ce code :
J’utilise ce code :
Public Function EstOuvertFichier(nomCompletFichier As String) As Boolean ' Teste si le fichier est ouvert Dim n°F As Integer EstOuvertFichier = False n°F = FreeFile On Error Resume Next Open nomCompletFichier For Input Lock Read As #n°F If Err = 70 Then EstOuvertFichier = True Close #1 On Error GoTo 0 End Function
Donc après avoir partagé mon fichier, et fait les tests d'utilisation, si un utilisateur 1 a ouvert le fichier pour y faire des modifications, et qu'un autre utilisateur 2 ouvre à son tour le fichier, y fait ses modifications, enregistre et ferme le fichier, il y a la copie utilisateur 2 avec son enregistrement et ensuite la copie utilisateur 1 avec son enregistrement mais n'incluant pas l'enregistrement de l'utilisateur 2. Donc toujours le même problème. Si quelqu'un a la solution merci infiniment d'avance. J'aimerai tant retrouver le système d'alerte à l'ouverture du fichier comme ci dessous :


Je ne pense pas que ça fonctionnera avec ce code, car il nécessite de préciser le nom complet du fichier, or, à chaque fois qu'un utilisateur va faire une modification dans ce fichier, ça crée une copie de "nom du fichier", si personne ne le renomme, en fin de journée on se retrouve avec une copie de copie de copie de copie ........................................"nom du fichier". C'est aun autre sujet que je ne comprends pas non plus, mais pour le moment c'est comme ça, si vous avez une idée du pourquoi merci d'avance de me dire d'où vient le problème (serveur ??). Merci pour votre aide.
Sinon lorsque qu'un autre utilisateur ouvre le fichier, il ne peut ouvrir qu'une copie en lecture seule, s'il l'enregistre, ce sera une copie de, et ensuite une copie de .. une copie de ... Donc une multitude de fichiers dont on ne sait pas lequel est le bon et très probablement aucun ne contiendra les modifications de tous les utilisateurs.
Dans le cas d'un fichier non partagé, l'emploi de la fonction ci-dessus permet de détecter si le fichier est ouvert ailleurs, d'afficher un message et de refermer la copie ouverte en lecture seule pour éviter la multiplication des copies.