VBA éviter message "fichier maintenant dispo en lecture ecriture"

F22Raptor

XLDnaute Impliqué
Bonjour,
Dans ma macro, j'ouvre un fichier réseau (actuellement ouvert sur un autre poste) en lecture seule.
J'utilise une de ses infos, et le ferme ensuite.

Problème : quand l'autre utilisateur qui avait le fichier ouvert (lecture écriture) sur son poste le ferme, j'ai un message "le fichier est à présent disponible poru modification", m'informant que je peux désormais l'utiliser en lecture-écriture (ce dont je me fiche ;o)

Comment éviter cette boîte parasite ?
Merci et bonne journée !


Voici le code

sub toto()

Workbooks.Open Filename:="\\chemin\nomfichier.xls"
If ActiveWorkbook.ReadOnly Then GoTo deja_ouvert
'///traitement divers et variés !///
Exit Sub

deja_ouvert:
Range("b1").Copy
Workbooks("base de donnees").Activate
ActiveSheet.Paste

end sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : VBA éviter message "fichier maintenant dispo en lecture ecriture"

Bonjour.
L'aide sur Workbooks.Open parle de 2 paramètres susceptibles de régler le proplème chacun à sa façon, or je n'en vois aucun dans votre code :
ReadOnly Argument de type Variant facultatif. True pour ouvrir le classeur en lecture seule.
et :
Notify Argument de type Variant facultatif. Si le fichier ne peut pas être ouvert en lecture-écriture, cet argument a la valeur True pour ajouter le fichier à la liste de notification des fichiers. Microsoft Excel ouvre le fichier en lecture seule, interroge la liste de notification des fichiers, puis indique à l'utilisateur quand le fichier est disponible. Si cet argument a la valeur False ou s'il n'est pas spécifié, aucune notification n'est demandée et toute tentative d'ouverture d'un fichier non disponible est impossible.
Cordialement.
 

F22Raptor

XLDnaute Impliqué
Re : VBA éviter message "fichier maintenant dispo en lecture ecriture"

Bonjour,
Merci pour ces pistes : j'avais dû enlever Notify:=false car, si cela correspondait bien à mon problème, cela crée un autre souci :

Si le fichier est déjà utilisé sur un autre poste, plutôt que de l'ouvrir directement en lecture seule (et rentrer ensuite dans le cadre de mon test If ActiveWorkbook.ReadOnly Then GoTo deja_ouvert ) il me donne un message "le fichier est déjà ouvert, voulez vous l'ouvrir en lecture seule" !!!

En fait, je veux ouvrir le fichier en écriture. Mais il est possible qu'il soit utilisé à ce moment là, et donc si c'est le cas, je veux une procédure de gestion d'erreur qui enverra un message : "réessayer plus tard"
 

F22Raptor

XLDnaute Impliqué
Re : VBA éviter message "fichier maintenant dispo en lecture ecriture"

Je pense avoir trouvé une soluce avec un mix de displayAlerts / resume next



Application.DisplayAlerts = False
On Error Resume Next
Workbooks.Open Filename:="\\chemin\fichier_a_ouvrir.xls", ReadOnly:=False, IgnoreReadOnlyRecommended:=True, notify:=False

If ActiveWorkbook.Name = "fichier_initial" Then GoTo pas_ouvert
If ActiveWorkbook.ReadOnly Then GoTo lectseule

' *** traitements divers sur le fichier ***

pas_ouvert:
MsgBox "Veuillez réessayer plus tard"
Application.DisplayAlerts = True
Exit Sub

lectseule:
MsgBox "Veuillez réessayer plus tard"
Workbooks("fichier_a_ouvrir.xls").Close SaveChanges:=False
Application.DisplayAlerts = True
Exit Sub


Merci pour l'aide fournie ! :)
 

Discussions similaires

Statistiques des forums

Discussions
312 685
Messages
2 090 943
Membres
104 704
dernier inscrit
uranium