Bonjour le Forum
(La résolution de cette discussion servira à répondre en partie à celle que j'avais ouverte "Classeur en lecture seule avec condition" en échange avec Mondev, pour laquelle je cherche une solution, mais le problème reste indépendant. Ai-je bien fait ?)
Sur ce même Forum, j'ai trouvé une fonction proposée par "Bouley" en Février 2006, et qui renvoie l'information quant à l'ouverture d'un classeur par moi-même, ou un autre de mes collègues de travail.
1 2 3 4 5 6 7 8 9 10 11
| Function FichierEstOuvert(ByRef FichierTeste As Variant) As Boolean
Dim FICHIER As Long
On Error GoTo Erreur
FICHIER = FreeFile
Open FichierTeste For Input Lock Read As #FICHIER
Close #FICHIER
FichierEstOuvert = False
Exit Function
Erreur:
FichierEstOuvert = True
End Function |
Voici mon code intégré dans un classeur "Annexe.xls":
1 2 3 4 5 6 7 8 9 10 11
| Private Sub Workbook_Open()
Dim NomCl As String
NomCl = "TATA.xls"
If FichierEstOuvert(NomCl) = True Then
MsgBox "Ouvert !"
Workbooks(NomCl).Close (False)
Else
MsgBox "Non Ouvert !"
End If
End Sub |
Immédiatement après l'ouverture d'une session Excel, j'ouvre ce classeur :
Msgbox ==> "Ouvert !"
Puis
Erreur d'exécution'9'
L'indice n'appartient pas à la sélection.
sur la lgne de code
Workbooks(NomCl).Close (False)
!!!!!????
Jusque là, cette fonction ne m'a posé aucun problème.
Je dois dire que dans une même session antérieure Excel, j'avais ouvert les 2 classeurs. D'autre part, il n'y a aucune liaison entre "TATA" et "Annexe".
Problème annexe :
Plus généralement, il arrive qu'un collègue utilise un classeur Excel puis le referme.
Si je cherche à l'ouvrir, j'ai un message "Ce classeur est déjà utilisé par ..."
Si le collègue reboote son classeur, alors je peux l'ouvrir sans problème ??!!
A quoi est dûe cette anomalie ?
Existe-t-il une instruction VBA pour lever ce genre de problème ?
Merci à tous.
Marcel
Partager