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

Access Discussion :

Recherche d'un dossier dans le disque


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 120
    Points : 73
    Points
    73
    Par défaut Recherche d'un dossier dans le disque
    J'ai cherché sur la FAQ et sur le Forum. Je n'ai pas trouvé mon bonheur ou les mots pour le chercher et le trouver.

    Je crée un dossier par société cliente. Dés que je crée un nouveau client qui peut être une filliale d'un autre, je souhaite recherche si le dossier de l'entreprise mère existe.
    Exemple : Nouveau client : XXXX -> Création du dossier XXX dans le dossier de la société YYY. Ext ce que le dossier YYY exiiste sur l'ensemble de la directory y compris dans les sous répertoires ?
    Y a til une solution connue ?
    Merci de votre aide ou de l'indication pour trouver mon bonheur !

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Peut être y a t'il une solution encore meilleure. Mais pour cela que fait tu si le dossier parent existe, que fais tu s'il n'existe pas ?

    Surement que ce code peut convenir

    http://access.developpez.com/sources...enceRepertoire

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 120
    Points : 73
    Points
    73
    Par défaut
    Merci de ta réponse.
    Je ne la connaissais pas et je vais l'exploiter ailleurs.
    Mais cela ne resoud pas complètement mon problème.
    En effet, le nom d'une société peut être par exemple DUPONT SA ou DUPONT XXX SA
    Si DUPONT exite déja, il ne faut pas le créer. Donc il est préférable de tester la présence de *DUPONT* avant de créer DUPONT SA
    Merci de votre aide

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 120
    Points : 73
    Points
    73
    Par défaut
    Jai trouvé une solution qui consiste (peu élégante je l'accorde) à balayer le répertoire et de tester à chaque fois que c'est un répertoire le nom et de renvoyer alors le nom complet;
    Solution tirée de la FAQ http://access.developpez.com/faq/?pa...ep#contenu_rep
    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
    Function Rech_ContenuRep_Nom(Répertoire As String, Chain As String) As String
    ' * RECHERCHE DANS UN REPERTOIRE D'UN NOM DE FICHIER POUVANT ETRE Chain (Like)
        Dim rep As String, Listerésult As Variant
        Répertoire = Répertoire & IIf(Right(Répertoire, 1) <> "\", "\", "") & "*.*"
        Chain = "*" & Chain & "*"
        'obtient le premier fichier ou répertoire qui est dans "c:\"
        rep = Dir(Répertoire, vbDirectory)
        'boucle tant que le répertoire n'a pas été entièrement parcouru
        Do While (rep <> "")
            'teste si c'est un fichier ou un répertoire
            If (GetAttr(rep) And vbDirectory) = vbDirectory Then
                If G_Rep Then
                    Debug.Print rep, Chain
                    If rep Like Chain Then
                        If MsgBox("Nous avons trouvé un répertoire proche ! " & vbCrLf & "Est ce celui-ci ? " & rep, vbApplicationModal + vbExclamation + vbYesNo + vbDefaultButton1, "CONFIRMATION") = vbYes Then
                            Rech_ContenuRep_Nom = rep
                            Exit Function
                        End If
                    End If
                End If
            End If
            'passe à l'élément suivant
            rep = Dir
        Loop
        Rech_ContenuRep_Nom = ""
    End Function
    Le deux premieres occurances (. et ..) passe et dés qu'il trouve un dossier XXX, il génère une erreur sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (GetAttr(rep) And vbDirectory) = vbDirectory Then
    "Fichier introuvable" alors que le dossier est réel
    Quelqu'un a t il un idée pour m'aider soit sur cette erreur soit sur une recherche du type "like *xx*" sur les noms de répertoire
    Merci de votre aide

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    En effet, mais peut être est ce plus simple ainsi :

    Exemple :

    Sub test()
    Dim strCheminDebut As String
    Dim strResult As String
    'Récupère le chemin de l'appli. Là où doit commencer la recherche
    strCheminDebut = CurrentProject.Path
    strResult = Dir(strCheminDebut & "\" & "*dup*", vbDirectory)
    If strResult <> "" Then
    MsgBox "Répertoire " & strResult & " trouvé"
    End If

    End Sub

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 120
    Points : 73
    Points
    73
    Par défaut
    Merci de ton aide mais la fonction s'arrete à la première rencontre.
    Si la chaine se trouve dans plusieurs répertoires, comment faire pour que Dir trouve les autres répertoires.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 120
    Points : 73
    Points
    73
    Par défaut
    L'instruction (GetAttr(rep) And vbDirectory) fonctionne à partir de la racine de type "D:\XXX" mais dés que le répertoire de départ intégre un sous répertoire comme "D:\XXX\YY", le message d'erreur apparait !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/05/2014, 11h50
  2. Réponses: 13
    Dernier message: 25/04/2012, 15h27
  3. Désigner (Choisir) un dossier dans un disque
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/09/2011, 15h09
  4. copier liste d'un dossier dans fichier disque
    Par coursia dans le forum Débuter
    Réponses: 4
    Dernier message: 31/08/2011, 15h47
  5. Recherche de dossier dans dossier
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/06/2007, 13h23

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