IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

fichier introuvable: erreur exécution 53 [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut fichier introuvable: erreur exécution 53
    Bonjour,

    j'ai ce petit programme qui balaye les sous-répertoires et ses fichiers à partir d'un répertoire père.
    A un moment donné la macro m'indique

    erreur d'exécution '53': Fichier introuvable
    Et donc bloque sur un sous-répertoire (alors que d'autres sous-répertoires ont déjà été balayés par la macro du répertoire père et non pas posés de problème)

    - le sous-répertoire à partir duquel la macro bloque (je l'appelle "TRUCMUCHE" pour la compréhension) et il existe
    - les 12 fichiers contenu dans le sous-répertoire "TRUCMUCHE" existent aussi
    - le sous-répertoire est sur un réseau



    - lorsque je supprime un à un les 12 fichiers manuellement et que je relance la macro l'erreur '53' toujours là
    - lorsque je supprime tous les fichiers du sous-répertoire "TRUCMUCHE" l'erreur '53' est absente

    lorsque je déplace le contenu du dossier (avec ses sous-répertoires dont le sous-répertoire "TRUCMUCHE") et que je le mets sur mon bureau l'erreur '53' est absente

    - lorsque je réinjecte les 12 fichiers supprimés sur le sous-répertoire "TRUCMUCHE" (du réseau) l'erreur '53' est présente

    ma macro est une macro "pompée" sur : https://www.developpez.net/forums/d2...-fonction-dir/ du post de Patrice740, merci à lui au passage (car ça m'a aidé en temps)

    dont en voici le contenu dans ma macro (j'ai juste ajouté la fonction sansAccent mais le pb ne vient pas de là car mes 12 fichiers non pas d'accent)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
     
    Function sansAccent(chaine As String) As String
    Dim ch_avec As String, ch_sans As String
    Dim tampon As String, position As String
    Dim i As Byte
     
    ch_avec = "ÉÈÊËÔéèêëàçùôûïî"
    ch_sans = "EEEEOeeeeacuouii"
    tampon = chaine
     
    For i = 1 To Len(tampon)
    position = InStr(ch_avec, Mid(tampon, i, 1))
    If position > 0 Then Mid(tampon, i, 1) = Mid(ch_sans, position, 1)
    Next i
     
    sansAccent = tampon
    End Function
     
    Public Sub Lister_Fichiers()
    ' Liste les fichiers d'un répertoire et ses sous-répertoires dans une feuille Excel
    Dim s As Shell32.Shell            'Shell
    Dim c As Shell32.Folder           'Choix de recherche dossier
    Dim p As String                   'Chemin (Path) du dossier
    Dim m As String                   'Message de la boite de dialogue
    Dim f As Scripting.Dictionary     'Fichiers
    Dim w As Excel.Workbook           'Classeur
    Dim r As Excel.Range              'Plage
      'Afficher la boite de dialogue avec l'arborescence
      On Error Resume Next
      m = "Choisir le répertoire à analyser :"
      Set s = New Shell32.Shell
      Set c = s.BrowseForFolder(0, m, 513)
      p = c.Items.item.path
      On Error GoTo 0
      'Fichiers du répertoire
      If p <> "" Then
        Set f = New Dictionary
        Call ListerDossier(f, p)
        If f.Count > 0 Then
          Set w = Application.Workbooks.Add(xlWBATWorksheet)
          Set r = w.Worksheets(1).Range("A1:B1")
          With r
          'Titres
           .Font.Bold = True
           .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = False
            .Cells(1, 1).Formula = "Fichier concerné"
            .Cells(1, 2).Formula = "Chemin complet du fichier"
            'Liste fichiers
            .Offset(1).Cells(1, 1).Resize(f.Count) = Application.Transpose(f.Items)
            .Offset(1).Cells(1, 2).Resize(f.Count) = Application.Transpose(f.Keys)
            .EntireColumn.AutoFit
          End With
        End If
      End If
      Set s = Nothing
      Set c = Nothing
    End Sub
     
    Sub ListerDossier(f As Scripting.Dictionary, ByVal p As String)
    Dim d As Scripting.Dictionary     'Dossiers
    Dim k As Variant                  'Clé
    Dim n As String                   'Nom
      Set d = New Dictionary
      p = p & "\"
      n = Dir(p, vbDirectory)
      ' Liste des sous-répertoires
      Do While n <> ""
        If n <> "." And n <> ".." Then
          If (GetAttr(p & n) And vbDirectory) = vbDirectory Then
            d(p & n) = n
          End If
        End If
        n = Dir
      Loop
      ' Lister les fichiers
      n = Dir(p)
      Do While n <> ""
        f(p & n) = sansAccent(n)
        n = Dir
      Loop
      ' Lister chaque sous-répertoire
      If d.Count > 0 Then
        For Each k In d.Keys
           n = k
           Call ListerDossier(f, n)
        Next k
      End If
    End Sub
    Donc je ne comprends pas pourquoi il ne trouve pas les fichiers ?

    ci-dessous le code lors du balayage des répertoires et c'est dans cette partie l'apparition de l'erreur '53'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Do While n <> ""
        If n <> "." And n <> ".." Then
          If (GetAttr(p & n) And vbDirectory) = vbDirectory Then
            d(p & n) = n
          End If
        End If
        n = Dir
      Loop
    Le pas à pas montre qu'il trouve bien le sous-répertoire à analyser ("TRUCMUCHE"),
    n prendra la valeur "." lorsque n=dir
    puis
    n prendra la valeur ".." lorsque n=dir
    puis
    n prendra la valeur d'un fichier lorsque n=dir
    puis rentre dans la boucle
    il bloquera sur le 1er fichier sous "TRUCMUCHE" qu'il ne trouve pas visiblement (alors que juste qu'auparavant le n = DIR passe).

    et donc bloque ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (GetAttr(p & n) And vbDirectory) = vbDirectory Then
    j'ai vérifié les attributs des fichiers (lecture seule décoché; caché décoché; archive coché) et qui ont les mêmes attributs comme d'autres fichiers dans d'autres sous-répertoires autres que "TRUCMUCHE" . Pareil pour la sécurité du fichier avec (modification, lecture exécution, lecture, écriture, sont cochés)
    idem (attributs valeur à "A" lorsqu'on fait clique droit sur le fichier)

    Donc là je sèche. Quelqu'un aurait-il une idée svp ?

    merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Je n'ai pas regardé le détail de la macro mais quand je lis la phrase ci-dessous, ça me fait penser à un soucis que j'ai déjà eu:
    lorsque je déplace le contenu du dossier (avec ses sous-répertoires dont le sous-répertoire "TRUCMUCHE") et que je le mets sur mon bureau l'erreur '53' est absente
    Quel est la taille (en nombre de caractère) de ton chemin complet avec le nom du fichier ?
    J'ai plus la valeur exacte en tête, mais a partir d'un moment vba tronque la variable texte si elle est trop longue et du coup bien que tout existe vba ne trouve pas ton fichier

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    bonjour,

    merci pour votre intervention. dans le chemin de "TRUCMUCHE" cela représente 224 caractères.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par esse2016 Voir le message
    bonjour,

    merci pour votre intervention. dans le chemin de "TRUCMUCHE" cela représente 224 caractères.
    224 avec ou sans le nom du fichier ?
    J'ai retrouvé la limite c'est 255 caractères normalement
    En recherchant je suis aussi tombé sur un moyen de contourner la limitation (j'ai pas testé moi même)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim AString As String * 1024

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    bonjour,

    224 avec ou sans le nom du fichier ?
    chemin + fichier + extension = 264 caractères au plus fort
    chemin + fichier + extension = 260 caractères au plus faible

    J'ai retrouvé la limite c'est 255 caractères normalement
    Donc effectivement en éliminant un à un mes fichiers je suis dans tous les cas au dessus des 255 caractères
    Le fait est de mettre le dossier "TRUCMUCHE" sur le bureau je diminue la longueur de la chaine de caractère du chemin (c'est à dire je supprime une partie du chemin réseau)

    J'ai recherchant je suis aussi tombé sur un moyen de contourner la limitation (j'ai pas testé moi même)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim AString As String * 1024
    je ne connais pas cette notation je vais enquêter

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, et si tu utilisais un variant plutôt qu'un string ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    Bon c’est résolut.
    Le problème provient bien de la longueur de la chaine
    Chemin+fichier+extension. Avec une longueur de 214 ça passe au dela,ça ne fonctionne plus

    Avec la déclaration de la variable n à variant au lieu de string ça ne change rien.

    Pfff, fallait trouver !

    Meric encore pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fichier introuvable Erreur '53'
    Par layesanga dans le forum VBA Access
    Réponses: 6
    Dernier message: 29/09/2013, 15h24
  2. [XL-2002] Erreur d'exécution '53': Fichier introuvable
    Par MarsOran dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/06/2009, 20h10
  3. erreur 53 "Fichier introuvable"
    Par AndréPe dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/02/2008, 18h35
  4. Réponses: 5
    Dernier message: 22/05/2007, 22h34
  5. [Erreur] E1026 Fichier introuvable : 'xxx.dfm'
    Par richard038 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2006, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo