[VBA] test si classeur deja ouvert

bonjour la Team;

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

je pensais utiliser :

If ActiveWorkbook.ReadOnly Then

message ....

Close....

Else

Exit Sub

Avez vous une idée

Merci d'avance

Salutations

Bonsoir,

En somme, la tentative d'ouverture du fichier déjà ouvert servirai de fermeture ?

Comprends pas bien la démarche !

Amicalement

Claude.

Bonjour,

Voici un code à mettre dans un module :

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

Bonsoir,

Felix avait donné une solution bien simple, pour savoir si un fichier était déjà ouvert....

https://forum.excel-pratique.com/viewtopic.php?t=11334&highlight=ouvert

3 lignes de code, et on sait....

Merci les amis pour vos réponses

Mais j'ai beau essayé tous les codes : ça me fait l'inverse

Le fichier est toujours "déjà ouvert" ???

JE capte pas ???

Salutations

dubois a écrit :

Bonsoir,

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

Salutations

22facure.xlsx (11.87 Ko)

Whoaaa truc délire qui m'arrive

A force de bidouiller, maintenant je n'ai plus de notifications de lecture seule ?????

Je peux ouvrir le même fichier 2 X et pas de message ???,

en plus je n' e'n voit qu'un seul d'ouvert ????

C'est quoi ce délire ???

PS : je suis sous Excel 2000

Rechercher des sujets similaires à "vba test classeur deja ouvert"