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 :

Créer Répertoires en fonction du résultat d'une requête [AC-2007]


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut Créer Répertoires en fonction du résultat d'une requête
    Bonjour,

    J'ai une requête me sortant plusieurs enregistrements avec 3 champs: F1 / F2 / Fichiers joints
    F1 correspond au fabricant
    F2 correspond à la référence
    Fichiers joints correspond aux fichiers joints de cette référence

    Je souhaite pouvoir créer un dossier sur mon disque par fabricant avec un sous dossier par référence et y extraire les fichiers joints.

    J'ai déjà réussi à pouvoir sélectionner le dossier de destination mais après je sèche.

    Voici ma fonction pour la sélection du dossier par défaut
    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
    Function BrowseFolder(Title As String, _
            Optional InitialFolder As String = vbNullString, _
            Optional InitialView As Office.MsoFileDialogView = _
                msoFileDialogViewList) As String
        Dim V As Variant
        Dim InitFolder As String
        With Application.FileDialog(msoFileDialogFolderPicker)
            .Title = Title
            .InitialView = InitialView
            If Len(InitialFolder) > 0 Then
                If Dir(InitialFolder, vbDirectory) <> vbNullString Then
                    InitFolder = InitialFolder
                    If Right(InitFolder, 1) <> "\" Then
                        InitFolder = InitFolder & "\"
                    End If
                    .InitialFileName = InitFolder
                End If
            End If
            .Show
            On Error Resume Next
            Err.Clear
            V = .SelectedItems(1)
            If Err.Number <> 0 Then
                V = vbNullString
            End If
        End With
        BrowseFolder = CStr(V)
    End Function
    Et l'appel de la fonction

    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
    Private Sub Export_Click()
    On Error GoTo Err_créer_dossier_Click
     
    Dim rq As dao.Recordset
    Dim rslt As Currency
    Dim str As String
     
    Dossier = BrowseFolder("Choisissez votre répertoire:") & "\TEST"
     
    MsgBox Dossier
     
    MkDir Dossier
     
    Exit_créer_dossier_Click:
    Exit Sub
     
    Err_créer_dossier_Click:
    MsgBox Err.Description
    Resume Exit_créer_dossier_Click
    End Sub
    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Bonjour.

    Ici ma solution à ce problème :

    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
    Public Sub CreerUneHierarchieDeRepertoires(prmCheminAccesFichier As String)
     
        On Error GoTo Err_CreerUneHierarchieDeRepertoires
     
        Dim cheminAccesFichier As String: cheminAccesFichier = EpurerCheminFichier(prmCheminAccesFichier)
     
        '=== Gère le disque/serveur
        Dim disqueServeur As String
     
        If prmCheminAccesFichier Like "?:*" Then
                'il y a un mappage
                disqueServeur = Left(cheminAccesFichier, 2)
                cheminAccesFichier = Mid(cheminAccesFichier, 4)
        ElseIf prmCheminAccesFichier Like "\\*" Then
                'On utilise un nom de serveur
                disqueServeur = Left(cheminAccesFichier, InStr(3, cheminAccesFichier, "\") - 1)
                cheminAccesFichier = Mid(cheminAccesFichier, Len(disqueServeur) + 2)
            Else
                Error 5 'Ne devrait jamais se produire en prod
        End If
        '--- Gère le disque/serveur
     
        'Récupère la liste des répertoires qui compose le chemin
        Dim nomRepertoire As Variant: nomRepertoire = Split(cheminAccesFichier, "\")
     
        Dim Chemin As String
     
        Chemin = disqueServeur
     
        Dim i As Long: For i = LBound(nomRepertoire) To UBound(nomRepertoire)
            Chemin = Chemin & "\" & nomRepertoire(i)
            MkDir Chemin
        Next i
     
    Exit_CreerUneHierarchieDeRepertoires:
        Exit Sub
     
    Err_CreerUneHierarchieDeRepertoires:
        Select Case Err.Number
            Case 75
                'OK, le répertoire existe déjà passe au suivant
                Resume Next
     
            Case Else
                Err.Raise Err.Number
     
        End Select
     
        Resume Exit_CreerUneHierarchieDeRepertoires
     
    End Sub
    Tu lui passes le chemin à créer et il s'occupe de tout.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Par défaut
    Merci marot pour ta réponse rapide mais il manque la fonction: EpurerCheminFichier

    Pourrais-tu me la fournir stp

    Cordialement

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Désolé la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function EpurerCheminFichier(prmChemin As String) As String
        'Supprime les espaces non significatifs et le \ à la fin du chemin
        Dim result As String: result = Trim(prmChemin)
     
        If Right(result, 1) = "\" Then
            result = Left(result, Len(result) - 1)
        End If
     
        EpurerCheminFichier = result
    End Function
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. [Toutes versions] Créer un état mis en forme en fonction des résultats d'une requête
    Par Rodrigue dans le forum IHM
    Réponses: 1
    Dernier message: 19/11/2010, 09h07
  2. Réponses: 2
    Dernier message: 21/03/2008, 15h41
  3. Verrouillage d'un formulaire en fonction du résultat d'une requête
    Par jaknichan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 02/01/2008, 10h10
  4. Réponses: 3
    Dernier message: 05/10/2007, 14h37
  5. Réponses: 6
    Dernier message: 25/09/2006, 14h11

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