Gérer l'ouverture d'un fichier (selon si ouvert, existant...)

Bonjour,

Voilà un bon moment que je teste mais au bout d'un moment, il faut peut-être que je m'avoue vaincu

Ce que je cherche à faire : ouvrir un fichier externe.

En prenant en compte ceci :

• ne rien faire si le fichier est déjà ouvert

• s'il existe alors l'ouvrir mais en masqué.

• si le fichier n'existe pas, afficher un MsgBox et continuer la macro (j'ai une vingtaine de fichiers à enchainer)

J'arrive à appliquer certains points mais pas tous en même temps.

Merci pour votre aide.

Ci-dessous : le code que j'utilise et qui ne marche pas.

Macro :

Dim BILAN_A As String
Dim MonFichier As String
BILAN_A = test.xlsx
MonFichier = C:\Users\Primokorn\....\test.xlsx

If FichierExiste(MonFichier) = False Then
    MsgBox "Accès au fichier impossible."
Else
If FichOuvert(BILAN_A) Then
    ' Ne rien faire
Else
    Workbooks.Open Filename:= _
    MonFichier _
    , UpdateLinks:=3, ReadOnly:=True
    ActiveWindow.Visible = False
End If
End If

Module complémentaire : FichierExiste

Public Function FichierExiste(MonFichier As String)
   If Len(Dir(MonFichier)) > 0 Then
      FichierExiste = True
   Else
      FichierExiste = False
   End If
End Function

J'ai testé du On Error Go To et If Dir("C:\Users\Primokorn...", vbDirectory) <> "" Then aussi mais rien ne marche à 100%.

Bonjour,

Essayer ce code

    Dim BILAN_A As String
    Dim MonFichier As String
    Dim wb As Workbook, bilan As Workbook
    Dim fichier_ouvert As Boolean

    BILAN_A = "test.xlsx"
    MonFichier = Environ("USERPROFILE") & "\Documents\" & BILAN_A

    For Each wb In Workbooks
        If wb.Name = BILAN_A Then fichier_ouvert = True
    Next wb

    If Not fichier_ouvert Then
        On Error Resume Next
        Set bilan = Workbooks.Open(MonFichier, 3, True)
        If Err.Number = 0 Then bilan.Windows(1).Visible = False _
        Else MsgBox "Accès au fichier impossible."
        On Error GoTo 0
    End If

NB: Ouvrir une 2ème fois le fichier s'il est déjà ouvert ne me parait pas un gros inconvénient à part d'augmenter un peu la charge mémoire.

Merci pour la proposition.

Le "problème", sauf erreur, c'est que je dois incrémenter chaque Dim pour chacun de mes fichiers.

Par exemple, pour le 2e fichier, faut que je remplace MonFichier par MonFichier2, wb par wb2, bilan par bilan2 et fichier_ouvert par fichier_ouvert2.

Quand tu as une vingtaine de fichiers source, je ne trouve que ce soit propre/pratique d'avoir à cliquer sur X boîtes de dialogue.

J'ai trouvé une solution !

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(CHEMIN_COMPLET)) Then
   If FichOuvert(FICHIER) Then
       ' Ne rien faire
   Else
       Workbooks.Open Filename:= _
       CHEMIN_COMPLET _
       , UpdateLinks:=3, ReadOnly:=True
       ActiveWindow.Visible = False
    End If
Else
   MsgBox "Accès au fichier impossible." & vbCr & "Veuillez vérifier l'existence du fichier et la justesse de son chemin d'accès : " & vbCr & vbCr & CHEMIN_COMPLET, vbOKOnly + vbExclamation, "ANOMALIE DÉTECTÉE"
End If
Rechercher des sujets similaires à "gerer ouverture fichier ouvert existant"