Je cherche s.v.p un code permettant à l'ouverture d'un classeur de savoir si celui-ci est déjà ouvert, si non il poursuit l'ouverture et l'exécution de la macro, si oui un petit message signalant que celui-ci est déjà ouvert et ferme sans sauvegarder
Sub OuvrirClasseur()
' Ouvrir un classeur
Dim strRep As String, strFichier As String
Dim wbClasseur As Workbook
strRep = ThisWorkbook.Path
strFichier = "FicA.xls" ' A remplacer par le nom du classeur à tester
' Vérifier que le classeur existe
If Dir(strRep & "\" & strFichier) = "" Then
' Affichage d'un message d'avertissement
MsgBox "Le fichier " & strFichier & " n'existe pas", vbCritical + vbOKOnly, "Erreur de fichier..."
Exit Sub
End If
Application.ScreenUpdating = False
' Si le classeur est déjà ouvert, afficher un message et le fermer sans sauvegarder
If TestClasseurOuvert(strRep & "\" & strFichier) = True Then
Set wbClasseur = Workbooks(strFichier)
MsgBox "Le classeur " & strFichier & " est déjà ouvert", vbCritical + vbOKOnly, "Fichier ouvert..."
Application.DisplayAlerts = False
wbClasseur.Close
Application.DisplayAlerts = True
End If
Application.ScreenUpdating = True
End Sub
Function TestClasseurOuvert(strClass As String) As Boolean
' Tester si le classeur est ouvert ou pas
Dim intX As Integer
TestClasseurOuvert = False
On Error Resume Next
intX = FreeFile()
Open strClass For Input Lock Read As #intX
Close intX
If Err.Number = 0 Then TestClasseurOuvert = False
If Err.Number = 70 Then TestClasseurOuvert = True
On Error GoTo 0
End Function
En somme, la tentative d'ouverture du fichier déjà ouvert servirai de fermeture ?
Comprends pas bien la démarche !
Amicalement
Claude.
Oui c'est cela, en fait j'ai une Macro à l'ouverture, si le classeur est déjà ouvert celui-ci plante, donc le fait de tester avant me permet de conserver celui ouvert et empêcher l'ouverture du nouveau
A part tester à l'ouverture si le fichier est en readOnly ou gérer l'erreur je ne voit pas trop de soluce