Bonjour à tous,
@Aphrodite, Prenez l'habitude de déclarer les variables , cela vous évitera pas mal d’ennuis à terme.
Dir renvoie un chaine de caractère si le fichier est présent. Vous devez utiliser le chemin complet comme dis par @Dysorthograhie pour ouvrir le fichier.
Vous pouvez quand même faire un test avec la variable ExistenceFile.
Dim Path As String
Path = PathToInputFile & "\" & Inputfilename
Dim ExistenceFile As Boolean
ExistenceFile = (Dir(Path) > vbNullString) ' //Renvoie False si Dir renvoie une chaine vide.
If ExistenceFile Then
Set file = Workbooks.Open(Path)
s = Workbooks(Inputfilename).Sheets(InputSheetName).Name <> vbNullString
Else
MsgBox "Nous ne trouvons pas " & Path & vbNewLine & _
"Peut être l'avez-vous renommé, déplacé ou supprimé."
End If
Le fait de construire une chaine avec ce type :
Path = PathToInputFile & "\" & Inputfilename
Peut entrainer des complications si PathToInputFile contient déjà un séparateur en fin de chaine. Préférez une petite fonction qui l'ajoute si nécessaire.
'@Description "Ajoute un backSlash à la fin du chemin si nécessaire."
Public Function AddBackslash( _
ByVal folderPath As String _
) As String
FolderPath = Trim$(folderPath)
If Right$(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
AddBackslash = folderPath
End Function
Ce qui donnerait :
Dim Path As String
Path = AddBackslash(PathToInputFile) & Inputfilename
Dim ExistenceFile As Boolean
ExistenceFile = (Dir(Path) > vbNullString)
If ExistenceFile Then
Set file = Workbooks.Open(Path)
s = Workbooks(Inputfilename).Sheets(InputSheetName).Name <> vbNullString
Else
MsgBox "Nous ne trouvons pas " & Path & vbNewLine & _
"Peut être l'avez-vous renommé, déplacé ou supprimé."
End If
Bonne programmation. Jean-Paul.