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
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 5
    Points
    5
    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 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    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+

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 5
    Points
    5
    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 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    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+

+ 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