Erreur exécution 53 sur fichier SRT

Bonjour,

Je souhaite réaliser une macro qui permet de :

Sélectionner un dossier

Lire tous les fichiers (SRT)

Extraire les 3 dernières lignes et les traiter

Stocker 2 valeurs (SumIn et SumOut) issue de cette ligne dans un tableau

Lors de la compilation j'ai une "Erreur d’exécution 53, fichier introuvable"

Open sFichier For Input As #iFile         'on ouvre le fichier srt

Je ne comprends pas car le fichier existe bien,

Lorsque je passe mon curseur sur sFichier, il m'affiche bien un fichier SRT (DOOR_1_20150726-091525.srt),

Idem pour repertoire qui part de la racine,

Je ne sais pas si c'est du à une erreur de langage ou si c'est Excel qui ne parvient pas a ouvrir le fichier SRT

Je vous joint mon code, vous comprendrez que je ne suis pas un Dieu d'Excel

Merci pour votre aide !!

Julien

Public repertoire As String, i As Byte, c As Byte
Sub Subtitles_cmd()
    If Range("Z17") > 0 Then    'vérification d'une entrée
       Set fd = Application.FileDialog(msoFileDialogFolderPicker)
        With fd
            .Title = "Sélectionner répertoire"
            .Filters.Clear
            .AllowMultiSelect = False
            If .Show = -1 Then
                repertoire = .SelectedItems(1)
                Select Case Range("Z17")
                Case Is = 1
                    Call Subtitles_extract(1, 4)
                    Call Subtitles_extract(2, 10)
                    Call Subtitles_extract(3, 16)
                Case Is = 2
                    Call Subtitles_extract(1, 4)
                Case Is = 3
                    Call Subtitles_extract(2, 10)
                Case Is = 4
                    Call Subtitles_extract(3, 16)
                End Select
            End If
        End With
    Else
        MsgBox "Please select a door number"

    End If
End Sub
Sub Subtitles_extract(n, c)
   Dim sFichier As String
   Dim iFile As Integer
   Dim LastLine1, LastLine2, LastLine As String
   Dim i As Long 'numéro de ligne / fichier
   Dim SumIn, SumOut As Byte

   Application.ScreenUpdating = False

   sFichier = Dir(repertoire & "\DOOR_" & 1 & "*.srt")               'Retourne uniquement les fichiers .srt et porte N
   iFile = FreeFile()                           'Numéro du fichier à ouvrir
   i = 7
   LastLine1 = ""
   LastLine2 = ""
   LastLine = ""

   Do While sFichier <> ""                      'Boucle sur tous les fichiers srt

      Open sFichier For Input As #iFile         'on ouvre le fichier srt
      While Not EOF(iFile)                      'Boucle sur toutes les lignes du fichier
         Line Input #iFile, LastLine1               'Récupère le contenu de toute les ligne et garde la dernière dans la variable LastLine
         LastLine = LastLine2                   'Stock les 3 dernières lignes
         LastLine2 = LastLine1

      Wend

      Close #iFile                              'Ferme le fichier Texte

        If IsNumeric(Mid(LastLine, InStr(LastLine, "SumIn"), 2)) Then   'Test si nombre
        SumIn = Mid(LastLine, InStr(LastLine, "SumIn"), 2)
        ElseIf IsNumeric(Mid(LastLine, InStr(LastLine, "SumIn"), 1)) Then 'Test si chiffre
        SumIn = Mid(LastLine, InStr(LastLine, "SumIn"), 1)
        Else
        SumIn = "0"
        End If
    'InStr Renvoie la position de la première occurrence d'une chaîne ("e")

        If IsNumeric(Mid(LastLine, InStr(LastLine, "SumOut"), 2)) Then
        SumOut = Mid(LastLine, InStr(LastLine, "SumOut"), 2)
        ElseIf IsNumeric(Mid(LastLine, InStr(LastLine, "SumOut"), 1)) Then
        SumOut = Mid(LastLine, InStr(LastLine, "SumOut"), 1)
        Else
        SumOut = "0"
        End If

        Cells(i, c) = SumIn                     'Écrit IN dans le fichier Excel
        Cells(i, c + 1) = SumOut              'Écrit OUT dans le fichier Excel
         i = i + 1                              'Incrémente la ligne
      If i >= 150 Then Exit Do                  'N'importer que les lignes 143 premiers fichiers

      sFichier = Dir                            'Trouve le prochain fichier Texte

   Loop
   Application.ScreenUpdating = True
End Sub

Exemple de fichier SRT nommé: DOOR_1_20150726-091525.srt

0
00:00:02,759 --> 00:00:04,654
In:  1 <b>[SumIn=1]</b>
Out: 0 <b>[SumOut=0]</b>

1
00:00:04,655 --> 00:00:11,564
In:  1 <b>[SumIn=2]</b>
Out: 0 <b>[SumOut=0]</b>

Bonjour,

h0uSe a écrit :

Je ne comprends pas car le fichier existe bien,

Lorsque je passe mon curseur sur sFichier, il m'affiche bien un fichier SRT (DOOR_1_20150726-091525.srt),

Idem pour repertoire qui part de la racine

Ton erreur est justement là

"sFichier" ne contient que le nom de ton fichier et non l'arborescence complète

A+

Merci Bruno !

Effectivement la réponse était dans la question

J'ai relus l'aide sur Dir,

sFichier = Dir(repertoire & "\DOOR_" & n & "*.srt")

Ici sFichier Renvoi bien le nom du fichier et non la concaténation de mon repertoire + fichier

Pour palier à ça j'ai remplacé par

Open repertoire & "\" & sFichier For Input As #iFile

ça fonctionne, mais y a t il une meilleur façon de faire ?

Encore merci

Julien

Salut Julien,

h0uSe a écrit :

Pour palier à ça j'ai remplacé par

Open repertoire & "\" & sFichier For Input As #iFile

ça fonctionne, mais y a t il une meilleur façon de faire ?

Sauf à concaténer ton chemin d'accès complet dans une autre variable (quel interêt), c'est la seule

Au plaisir

Rechercher des sujets similaires à "erreur execution fichier srt"