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 :

Vérifier si un sous dossier n'est pas vide avec une partie de son nom


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2021
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2021
    Messages : 36
    Par défaut Vérifier si un sous dossier n'est pas vide avec une partie de son nom
    Bonjour le forum,

    J'ai besoin de votre aide vraiment

    J'ai un fichier Excel qui contient des numéros uniques, ces numéros constituent la première partie des noms des dossiers dans un répertoire.

    Par exemple dans le fichier Excel on a la numéro "123", on trouve dans le répertoire un dossier nommé "123-XXX".

    Dans tous les dossiers on a un sous dossier nommé "sécurité". Souvent dans le sous dossier "sécurité" on a des autres sous dossiers souvent non. Mon objectif c'est de vérifier que si parmi les sous dossiers du sous dossier "sécurité", il y 'a un un sous dossier nommé "Amiante", si oui s'assurer qu'il n'est pas vide.

    Est ce que quelqu'un peut m'aider sur le macro

    J'ai cette macro mais ne marche pas:
    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
    Sub VerifierDosAmiante()
    Dim dossier As String, chemin As String, num As String, pasvidefic As String
    Dim dossier1 As String, num1 As Range, ok As Range, dl As Long
    chemin = "C:\Users\fgp\DosTest\" 'On définit le chemin du fichier
    dl = Sheets("GE S").Cells(Rows.Count, 1).End(xlUp).Row
    Set num1 = Sheets("GE S").Range("A2")
    dossier1 = "\Securite\Amiante\"
    For i = 2 To dl
    num = num1.Value 'on définit le numéro d'immobilisation contenu dans le fichier
     
        fichier = Dir(chemin & num & "*" & dossier1, vbDirectory Or vbHidden) 'cherche le fichier dans le chemin correspondant
        Do While fichier <> ""
        If fichier <> "." And fichier <> ".." Then Exit Do
        fichier = Dir
     Loop
     pasvidefic = Dir(fichier, vbNormal Or vbHidden)
     If fichier & pasvidefic = "" Then
       Sheets("GE S").Range("D" & i) = "Not OK"
     Else
       Sheets("GE S").Range("D" & i) = "OK"
     End If
    Set num1 = num1.Offset(1, 0) ' on passe au numéro de fichier suivant
    num1.Select
    Next
    End Sub
    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    A tester (non vérifié):
    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
    Option Explicit
     
    Sub VerifierDosAmiante()
        Dim ChDoss As String, ChAmiante As String, dl As Long
        ThisWorkbook.Sheets("GE S").Select
        dl = Cells(Rows.Count, 1).End(xlUp).Row                 '--- n° dernière ligne
        For i = 2 To dl                                         '--- n° ligne
            Range("A" & i).Select
            ChDoss = "C:\Users\fgp\DosTest\" & ActiveCell.Value & "*"
            Range("D" & i) = "Not OK"
            Do While ChDoss <> ""
                ChAmiante = ChDoss & "\Securite\Amiante"
                Debug.Print ChAmiante
                If Dir(ChAmiante, vbDirectory) = "" Then
                    '--- sous-dossier Amiante non trouvé
                    ChDoss = Dir
                Else
                    '--- sous-dossier Amiante trouvé
                    If Dir(ChAmiante & "\", vbNormal) <> "" Then
                        '--- au moins 1 fichier dans sous-dossier Amiante
                        Range("D" & i) = "OK"
                        Exit Do
                    End If
                End If
            Loop
        Next
    End Sub
    Cordialement.

Discussions similaires

  1. [Toutes versions] Ouvrir un dossier sur une partie de son nom
    Par Fildelyon dans le forum VBA Access
    Réponses: 4
    Dernier message: 29/10/2019, 06h31
  2. Réponses: 0
    Dernier message: 25/02/2013, 16h09
  3. Comment vérifier si une structure n'est pas vide
    Par colorid dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2008, 00h01
  4. Un dossier n'est pas accessible. Accés refusé
    Par doolar dans le forum Windows XP
    Réponses: 10
    Dernier message: 09/04/2008, 07h22
  5. Réponses: 1
    Dernier message: 06/12/2007, 17h13

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