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 :

"Chemin d'accès introuvable" Pour macro taille de dossier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Par défaut "Chemin d'accès introuvable" Pour macro taille de dossier
    Bonjour ,

    Je suis actuellement en train de développer des macros qui me permettent tout d'abbord d'importer les noms des sous dossiers d'un répertoire indiqué.
    Par exemple si on entre "C:\" on obtient le nom de tout les sous-dossiers.

    Ensuite, la deuxième partie de la macro permet d'indiquer à coté du nom des sous-dossier sa taille en octet. Cela fonctionne bien, hormis pour certains dossier où un message d'erreur apparaît :"Chemin d'accès introuvable". Alors que celui-ci est bon...

    Je joint un fichier test de la macro avec quelques explications : http://cjoint.com/?0GlnzOzfclX

    Sinon voici le code de la macro :
    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
    Sub Taille_Dossiers_T2()
        'Placé en début de macro:
        'Si une erreur survient, on va à la ligne "err"
        On Error GoTo err
     
        Dim i As Long
        Dim fso As Scripting.FileSystemObject
        Dim Dossier As Scripting.Folder
        Sheets(1).Activate
        Set fso = New Scripting.FileSystemObject
        For i = 50 To 15 Step -1
         If Cells(i, 2).Value <> "" Then
            Set Dossier = fso.GetFolder(Cells(i, 2))
            Cells(i, 3).Value = (Dossier.Size)
            Cells(i, 3).Value = Cells(i, 3).Value
            End If
     
    err:
        'indique suivant le numéro la description de l'erreur survenue
        If Err.Number = 76 Then
        Cells(i, 3).Value = "Chemin d'accès introuvable"
          Resume Next
        End If
        If Err.Number = 70 Then
        Cells(i, 3).Value = "Accès refusé"
          Resume Next
        End If
        Next i
     
        Set Dossier = Nothing
        Set fso = Nothing
     
    End Sub

    En espérant que vous pourrez m'aider
    A bientot

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Après essais, pas de résultat probant !
    Il y a quelques temps je me suis amusé à faire un pseudo explorateur, teste ce code pour vois si tu peux récupérer quelque chose qui t'intéresse (fonction récursive) lance à partir de la proc "Test" après avoir défini le chemin. Ceci peut prendre plusieurs secondes si tu pars du lecteur et que tu as beaucoup de dossiers dans ce dernier. Les cellules en fond jaune comportent les noms des dossiers, les bordures basses en jane indique le lien de parenté :
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    Dim J As Integer
    Dim Racine As Boolean
     
    Sub Test()
     
        J = 0
        Racine = True
        RecupDossiers "D:\" 'adapter le chemin
     
    End Sub
     
     
    Private Sub RecupDossiers(Dossier As String)
     
        Dim FSO As Object
        Dim Dos As Object
        Dim Fichier As Object
        Dim I As Integer
        Static DossierRacine As String
     
        'supprime le "\" de fin
        If Right(Dossier, 1) = "\" Then Dossier = Left(Dossier, Len(Dossier) - 1)
     
        If DossierRacine = "" Then DossierRacine = Dossier
     
        'crée l'objet FSO
        Set FSO = CreateObject("Scripting.FileSystemObject")
     
        'si le dossier n'existe pas
        If FSO.FolderExists(Dossier) = False Then
     
            MsgBox "Le dossier portant ce nom n'existe pas !"
            Exit Sub
     
        End If
     
        'si c'est le dossier racine
        If Racine = True Then
     
            J = 1
     
            Cells(J, 1) = Right(Dossier, Len(Dossier) - InStrRev(Dossier, "\"))
            Cells(J, 1).Font.Bold = True
            Cells(J, 1).Interior.ColorIndex = 27
     
            'récupère les fichiers contenus dans le dossier racine
            For Each Fichier In FSO.GetFolder(Dossier).Files
     
                J = J + 1
     
                Cells(J, 1) = Fichier.Name
     
            Next Fichier
     
            Racine = False
     
        End If
     
        'si c'est le lecteur, il n'y a pas de "\" donc, I doit être à 1 pour colonne A
        If InStr(Dossier, "\") = 0 Then I = 1 Else I = 0
     
        'boucle sur les dossiers
        For Each Dos In FSO.GetFolder(Dossier).SubFolders
     
            'défini I en recherchant les "\" afin de créer un décalage pour la hiérarchie
            I = UBound(Split(Replace(Dos, "\", ";"), ";")) - UBound(Split(Replace(DossierRacine, "\", ";"), ";")) + 1
     
            J = J + 1
     
            'récupère le nom du dossier et mets le nom en gras
            Cells(J, I) = Dos.Name
            Cells(J, I).Font.Bold = True
            Cells(J, I).Interior.ColorIndex = 27
     
            With Cells(J, I - 1).Borders(8)
     
                .LineStyle = xlContinuous
                .ColorIndex = 27
                .Weight = 4
     
            End With
     
     
            'évite l'erreur des fichiers interdits
            On Error Resume Next
     
            'récupère les fichiers contenus dans le dossier en cours
            For Each Fichier In Dos.Files
     
                J = J + 1
     
                Cells(J, I) = Fichier.Name
     
            Next Fichier
     
            'rappel de la proc pour chercher les dossiers enfants
            RecupDossiers Dossier & "\" & Dos.Name
     
        Next Dos
     
    End Sub
    Hervé.

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai pas ouvert ton fichier; mais comme Windows bloque l'accès à un certain nombre de dossiers, pour des raisons de sécurité; "Chemin d'accès introuvable" veut souvent dire "Dossier bloqué par Windows"

    Avec un peu de chance, si tu lances Excel "en tant qu'administrateur", Windows va brailler moins souvent.

    Sinon, cela va te prendre un expert en sécurité de Windows, légal ou illégal, ou un Tit-Jos Connaissant qualifié pour contourner les blocages.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Par défaut
    Bonjour et merci pour vos réponses

    Le problème d'accès est bien lié à un manque de droits d'accès réseau.

    Quant au deuxième problème, il est apparemment du à des chemins d'accès trop long..! Il font plus de 260 caractères et donc trop long pour windows.. Il n'y a donc pas vraiment de solution.

    En allant chercher manuellement la taille des dossiers qui posent problème avec clic droit => propriété, pensez-vous que j'obtiendrais la taille totale du dossier ? ou celle du dossier moins les sous-dossiers qui ont un chemin d'accès trop long ?

  5. #5
    Invité
    Invité(e)
    Par défaut Bonjour,
    regarde le lien
    Scan Rep & taille

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Par défaut
    J'ai testé ta macro, elle fonctionne bien pour les dossiers du disque du interne.
    Mais sur le réseau, quand le dossier sélectionné contient une grande arborescence, la macro "travaille" 2min puis s'arrête sans que rien ne soit modifié sur la feuille ..


    EDIT: sinon n'y a-t-il pas un moyen de récupérer les chemins d'accès supérieur à 255 qui est la limite max ?
    Cela permettrait de savoir quels dossier/fichiers il faut renommer

Discussions similaires

  1. Erreur "Chemin d'accès introuvable"
    Par Cachlab dans le forum VBScript
    Réponses: 15
    Dernier message: 06/02/2012, 16h19
  2. Réponses: 18
    Dernier message: 26/07/2011, 16h08
  3. Chemin d'accès introuvable
    Par rainlily dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/08/2007, 22h26
  4. erreur d'exécution '76' chemin d'accès introuvable
    Par ensmaitk dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/04/2007, 17h31
  5. Pb Chemin d'accès introuvable
    Par loic.440 dans le forum ASP
    Réponses: 2
    Dernier message: 13/01/2005, 13h05

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