Avertir un user qui modifie une cellule qu'il est en read only

Résolu/Fermé
lys3r3 Messages postés 8 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 18 décembre 2014 - Modifié par lys3r3 le 18/11/2013 à 10:44
lys3r3 Messages postés 8 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 18 décembre 2014 - 18 nov. 2013 à 11:07
Bonjour,

Dans le cadre professionnel, je met à jour le code VBA d'un fichier vieux de plus de 15 ans.
J'ai donc modernisé et simplifié les anciennes fonctionnalités mises en place,
j'en ai rajouté d'autres,
en revanche, à l'époque il n'y avait qu'un seul utilisateur, maintenant il y'en a plus de 40...
Il a donc été mis en place des sécurités pour que seules 3 personnes puissent être en écriture sur le fichier (un mot de passe pour empêcher l'ouverture en écriture changeant régulièrement)

Néanmoins, il arrive que les comptables ayant accès au fichier en écriture se retrouve à consulter simultanément le fichier, donc l'un d'entre eux est en écriture et les autres également en lecture.
Il arrive également que ce fichier reste ouvert en lecture seule chez un agent ayant l'autorisation d'écrire dessus et que celui-ci par erreur modifie le document en pensant être en écriture... Et lors de l'enregistrement, boum, impossible puisque la personne est en lecture seule.

J'ai donc déjà rajouté cette petite macro au début de chaque autre macro
'macro pour le nouvel engagement

'avant d'activer une macro, vérifier que le fichier est accessible en écriture
If ActiveWorkbook.ReadOnly Then
'le classeur est en lecture seule, message d'alerte
MsgBox ("Attention, le classeur est ouvert en lecture seule, cette procédure va être interrompue.")
'ARRET DU TRAITEMENT
End
End If
'cas ou le classeur n'est pas en lecture seule
'ne pas mettre à jour l'affichage d'excel quand les macros tournent.
Application.ScreenUpdating = False
'Afficher toutes les données et suppression des filtres seulement s'il y'en a
'vérifier s'il y'a des filtres sur la feuille
If ActiveSheet.FilterMode Then
'si oui, les remettre en position neutre
ActiveSheet.ShowAllData
End If

Mais, si cette option me convient pour les actions directes des utilisateurs sur les macros, elle ne fonctionne bien sur pas quand un utilisateur souhaite modifier un libellé ou la valeur d'une case.
Il me semble qu'il est possible d'ajouter un petit quelque chose qui prévient ce désagrément directement dans le workbook mais je ne sais pas comment le tourner et les aides à ce sujet sont plutôt maigres (après il est aussi possible que j'ai mal formulé ma recherche)
Pouvez-vous m'aider ? Ou me renvoyer vers le topic idoine si cette demande a déjà été traitée ?
Il s'agit d'un fichier excel 2003
A voir également:

2 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
18 nov. 2013 à 10:48
Bonjour,

Tu peux mettre du code dans
Workbook_SheetSelectionChange
ou
Workbook_SheetChange
qui rappelle à l'utilisateur que le fichier est en lecture seule.
Mais l'information lecture seule lui est déjà donnée à l'ouverture du fichier...

A+
0
lys3r3 Messages postés 8 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 18 décembre 2014
Modifié par lys3r3 le 18/11/2013 à 11:11
Merci beaucoup, ça fonctionne, je n'avais pas pensé à un truc aussi simple...
Je suis bien d'accord avec toi Zoul, à l'ouverture l'utilisateur est averti, mais après deux ou trois heures dans plusieurs fichiers excel en simple consultation, mes utilisateurs ont tendance à oublier qu'ils sont en lecture seule... ^^
0