VBA - Ouvrir fichier : Erreur 400

AntoineR

XLDnaute Nouveau
Bonjour à tous !

Je souhaite ouvrir un fichier, j'ai ce code, mais j'obtiens une erreur 400 au niveau de la ligne "Workbooks.Open (CheminFile & NomFile)" et je n'arrive pas à trouver pourquoi...

merci pour votre éventuelle aide !!

Code:
Public Function OpenFile(ByVal CheminFile As String, ByVal NomFile As String) As Boolean

Dim isOpen As Boolean
isOpen = False

For Each file In Workbooks
    If file.Name = NomFile Then
        isOpen = True
    End If
Next

If isOpen = False Then
    Workbooks.Open (CheminFile & NomFile) '---->>> Erreur 400 sur cette ligne
    OpenFile = False
Else
    OpenFile = True
End If

End Function
_________________________________________________________________

Sub OpenExtractions()

Dim CheminFile As String
Dim NomFile As String
CheminFile = ActiveWorkbook.Path + "\"
NomFile = "Extraction.xls"
Dim FileOpen As Boolean
FileOpen = OpenFile(CheminFile, NomFile)

End Sub
 

Dranreb

XLDnaute Barbatruc
Re : VBA - Ouvrir fichier : Erreur 400

Bonjour.
Personnellement plutôt qu'un Boolean c'est un Workbook que je renverrais :
VB:
Sub xy()
Dim MonClasseur As Workbook, Plage As Range
Set MonClasseur = Classeur("NomClas.xls")
If MonClasseur Is Nothing Then Exit Sub
Set Plage = MonClasseur.Worksheets(1).UsedRange
'etc. …
End Sub

Function Classeur(NomFic As String, Optional ByVal Dossier As String) As Workbook
If Dossier = "" Then Dossier = ThisWorkbook.Path
If Dossier = "" Then Dossier = CurDir
On Error Resume Next
Set Classeur = Workbooks(NomFic)
If Err Then
   Err.Clear: Set Classeur = Workbooks.Open(Dossier & "\" & NomFic)
   If Err Then MsgBox "Il n'existe pas de classeur """ & NomFic _
      & """ sur :" & vbLf & Dossier, vbCritical, "Classeur"
ElseIf UCase(Classeur.Path) <> UCase(Dossier) Then
   If MsgBox("Un classeur """ & NomFic & """ est déjà ouvert, mais son chemin est :" _
      & vbLf & Classeur.Path & vbLf & "et non pas :" & vbLf & Dossier & vbLf & _
      "Faut-il le considérer comme celui désiré ? (sinon fermez le d'abord)", _
      vbYesNo + vbExclamation, "Classeur") = vbNo Then Set Classeur = Nothing
   End If
End Function
 
Dernière édition:

Discussions similaires