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

VBA Access Discussion :

problème avec MkDir [AC-2013]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de toony63
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Janvier 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2017
    Messages : 49
    Par défaut problème avec MkDir
    Bonjour a tous

    J'ai un code qui fait des siennes un coup il marche et d'autre fois non

    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
    Private Sub Indiquer_dossier_stockage_Click()
    Dim DossierAssurance As String
    Dim fd As Office.FileDialog
     
    If IsNull(Dossier_stockage) Then
     
    DossierAssurance = "C:\TRAVAIL\Assurances\" & Compagnie & " " & Nom_Client & " " & Numero_dossier
     
     On Error GoTo Err
      'Créer le dossier Assurance si nécessaire
        MkDir DossierAssurance
     
      'Afficher les fichiers présents dans le dossier indiqué
    Dossier_stockage = DossierAssurance
     
      'mise à jour case dossier stockage
    Dossier_stockage.Requery
     
    Me.Liste_fichiers.RowSourceType = "Liste valeurs"
    Me.Liste_fichiers.RowSource = ShowFolderList(Dossier_stockage)
     
    Err:
        Select Case Err.Number
            Case (2501)
               Exit Sub
       End Select
     
    Else
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
     
    'Titre de la boîte de dialogue
    fd.Title = "Sélectionnez un dossier..."
     
    'Afficher la boîte de dialogue et traiter le résultat
    If fd.Show() Then
    End If
     
    'Afficher les fichiers présents dans le dossier indiqué
    On Error GoTo Err2
    Dossier_stockage = fd.SelectedItems(1)
    Me.Liste_fichiers.RowSourceType = "Liste valeurs"
    Me.Liste_fichiers.RowSource = ShowFolderList(Dossier_stockage)
     
    Err2:
        Select Case Err.Number
            Case (2501)
                Exit Sub
       End Select
     End If
    End Sub
    avez vous une idée d’où peux venir le problème ?
    D'avance merci
    Anthony

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    pourrais-tu expliciter le "des fois oui des fois non" ? En effet, c'est un peu vague

    Procédons par étapes :
    - quel est l'objetif du code présenté ?
    - quels sont les cas où cela fonctionne et quels sont les cas qui plantent ?
    - quel est la structure des dossiers existants de le dossier TRAVAIL ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti Avatar de toony63
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Janvier 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2017
    Messages : 49
    Par défaut
    Salut,

    pourrais-tu expliciter le "des fois oui des fois non" ? En effet, c'est un peu vague
    Alors des fois le code fonctionne parfaitement et crée le dossier et d'autre fois il ne créer absolument rien et passe au End Sub ....

    quel est l'objetif du code présenté ?
    quel est la structure des dossiers existants de le dossier TRAVAIL ?
    Créé un sous-dossier dans le dossier : C:\TRAVAIL\Assurances\
    avec comme nom de sous dossier [compagnie _ nom-client _ num-dossier] lors d'un click sur le bouton

    exemple :
    Nom : dossier - Compres.jpg
Affichages : 327
Taille : 84,6 Ko

    Merci d'avance

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    As-tu une combinaison qui plante à chaque fois ?

    Je pense que des caractères interdits s'immiscent dans les libellés que tu voudrais pouvoir créer.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Modérateur

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

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

    Voici le code que j'utilise pour faire cela :

    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
    Public Sub CreerUneHierarchieDeRepertoires(prmRepertoireAccesFichier As String)
     
        On Error GoTo Err_CreerUneHierarchieDeRepertoires
     
        Dim RepertoireAccesFichier As String: RepertoireAccesFichier = EpurerRepertoireFichier(prmRepertoireAccesFichier)
     
        '=== Gère le disque/serveur
        Dim disqueServeur As String
     
        If prmRepertoireAccesFichier Like "?:*" Then
                'il y a un mappage
                disqueServeur = Left(RepertoireAccesFichier, 2)
                RepertoireAccesFichier = Mid(RepertoireAccesFichier, 4)
        ElseIf prmRepertoireAccesFichier Like "\\*" Then
                'On utilise un nom de serveur
                disqueServeur = Left(RepertoireAccesFichier, InStr(3, RepertoireAccesFichier, "\") - 1)
                RepertoireAccesFichier = Mid(RepertoireAccesFichier, 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 Repertoire
        Dim nomRepertoire As Variant: nomRepertoire = Split(RepertoireAccesFichier, "\")
     
        Dim Repertoire As String
     
        Repertoire = disqueServeur
     
        Dim i As Long: For i = LBound(nomRepertoire) To UBound(nomRepertoire)
            Repertoire = Repertoire & "\" & nomRepertoire(i)
     
    '        If mdlGlobal.EST_MODE_DEBUG Then
    '            Debug.Print Repertoire
    '        End If
     
            MkDir Repertoire
        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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function EpurerRepertoireFichier(prmRepertoire As String) As String
        'Supprime les espaces non significatifs et le \ à la fin du Repertoire
        Dim result As String: result = Trim(prmRepertoire)
     
        If Right(result, 1) = "\" Then
            result = Left(result, Len(result) - 1)
        End If
     
        EpurerRepertoireFichier = result
    End Function
    Je lui passe le chemin complet et il crée tous les répertoires dont j'ai besoin.

    Exemple d'utilisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Test_CreerUneHierarchieDeRepertoires()
        Call CreerUneHierarchieDeRepertoires("x:\Toto\Titi\Tata)
    End Sub
    À date il ne m'a jamais fait défaut.

    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.

  6. #6
    Membre averti Avatar de toony63
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Janvier 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2017
    Messages : 49
    Par défaut
    bonsoir après plusieurs essai il ne bug plus

    alors on verra bien

    merci a Jean-Philippe André et marot_r
    j'ai fait 2-3 modif dans le code et ça a l'air de fonctionner

    Bonne soirée

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

Discussions similaires

  1. [XL-2013] problème avec mkdir
    Par hvegung dans le forum Excel
    Réponses: 5
    Dernier message: 13/06/2016, 10h47
  2. Problème avec la fonction mkdir
    Par -Neo- dans le forum Langage
    Réponses: 7
    Dernier message: 18/06/2007, 15h52
  3. problème avec mkdir()
    Par LeParrain735 dans le forum Langage
    Réponses: 5
    Dernier message: 03/02/2006, 16h54
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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