Mkdir dossier/sous dossier

Résolu
Bonjour, la communauté,
petite question quel est le code pour créer un sous dossier dans un dossier qui existe déja?

yann

8 réponses

  1. Modérateur
    Bonjour,
    Dans quel VB ?
    VBA ? VB6 ? VB.NET ? VBSCRIPT ?

    Sans cette information il sera difficile de t'apporter une réponse exacte....

    Sachant que si c'est en VBA : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/mkdir-statement
    Tu as également des scripts tel que celui-ci
    https://stackoverflow.com/questions/10803834/create-a-folder-and-sub-folder-in-excel-vba
    Qui peuvent s'appliquer au VBA et/ou au vbScript

    Ce qui m'étonne.. c'est qu'il y a tellement de résultats pour cette question sur internet que tu viennes quand même poser la question....
    As tu testé des choses ? As tu rencontré des soucis ?

    0
    1. Contributeur
      bonjour, par exemple:
      MkDir("C:\DossierExistant\NouveauSousDossier\") 
      1
      1. merci pour la réactivité,
        en vba sous excel 2007
        en effet les sujets ne manque pas
        pour mkdir pas de problème
        mais si le dossier racine existe déjà impossible de lui attribuer un nouveau dossier dedans
        0
        1. pour plus de précision
          je veux créer un sous dossier toto dans fichier tata
          ok
          mais quand je relance le macro avec sous dossier titi
          message erreur il me dit que le dossier racine tata existe déjà au lieu de créer titi dans tata
          je ne sais pas si c'est très clair!
          0
          1. Contributeur
            c'est peu clair, tata est-il un fichier ou un dossier?
            ce serait encore plus clair si tu nous montrais le code de la macro.
            0
        2. merci
          je mis colle et vous fais un retour
          0
          1. Bon je me lance
            ci joint le code que j’utilise
            (je sais que cela va piquer les yeux)
            Mais mkdir rien a faire malgré les nombreux sujets
            L’idée est de créer dossier et sous dossier mais si le dossier existe déjà de créer quand même le sous dossier dedans
            Désolé de ma méconnaissance mais la je sèche
            Merci aux pédagogues de passage

            Sub CreaDossier()

            Dim Dossier As String, sousdossier As String, Fichier As String, Chemin As String
            Dossier = Sheets("renseignement client").Range("B27").Value
            sousdossier = Sheets("renseignement client").Range("B23").Value
            MkDir "C:\Users\Yann\Documents\xxxxxxxx\devis\" & Dossier \ sousdossier
            'Fichier = Sheets("renseignement client").Range("B23").Value
            'Chemin = "C:\Users\Yann\Documents\xxxxxxxxxx\devis\" & Dossier
            'ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xlsm"
            End Sub
            0
            1. Contributeur
              merci d'utiliser les balises de code. cela donnerait ceci, beaucoup plus lisible:
              Sub CreaDossier()
              
              Dim Dossier As String, sousdossier As String, Fichier As String, Chemin As String
              Dossier = Sheets("renseignement client").Range("B27").Value
              sousdossier = Sheets("renseignement client").Range("B23").Value
              MkDir "C:\Users\Yann\Documents\xxxxxxxx\devis\" & Dossier \ sousdossier
              'Fichier = Sheets("renseignement client").Range("B23").Value
              'Chemin = "C:\Users\Yann\Documents\xxxxxxxxxx\devis\" & Dossier
              'ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xlsm"
              End Sub

              tu n'as pas pris le temps ni la peine d'expliquer ce que tu voulais faire ni ce que tu as testé, tu as fait le minimum d'effort pour simplement demander de l'aide.
              au lieu de ta ligne 6, je suggère:
              MkDir "C:\Users\Yann\Documents\xxxxxxxx\devis\" _
                     + cstr(Dossier) + "\" +cstr(sousdossier)
              0
          2. Modérateur
            Bonjour,

            Ceci devrait correspondre à tes besoins :

            Sub test()
                Dim Dossier As String
                Dim sousdossier As String
                Dim Fichier As String
                Dim Chemin As String
                
                repDevis = "C:\Users\Yann\Documents\xxxxxxxxxx\devis\"
                Dossier = Sheets("renseignement client").Range("B27").Value
                sousdossier = Sheets("renseignement client").Range("B23").Value
                
                
                Fichier = "Nouveau_fichier"
                    
                D1 = createDirectoryIfNotExists(repDevis & Dossier)
                D2 = createDirectoryIfNotExists(repDevis & Dossier & "\" & sousdossier)
                
                ActiveWorkbook.SaveAs Filename:=repDevis & Dossier & "\" & sousdossier & "\" & Fichier & ".xlsm"
                
            End Sub
            
            Function createDirectoryIfNotExists(Chemin As String) As Boolean
                If Right(Chemin, 1) <> "\" Then
                    Chemin = Chemin & "\"
                End If
                
               'Si le répertoire existe déjà
                If Dir(Chemin, vbDirectory) <> vbNullString Then
                    Debug.Print "Le dossier " & Chemin & " existe déjà "
                    createDirectoryIfNotExists = False
                Else
                    'Sinon... on le créé
                    MkDir Chemin
                    createDirectoryIfNotExists = True
                End If
            End Function
            

            0
            1. grand merci
              je teste de suite
              pour info yg_be je ne me rappelai plus de la balise de code mea-culpa
              de dire que j'ai fais le minimum est vexant j'ai cherché de mon coté mais mon niveau de noob ma très vite limité
              après une journée je me tourne vers des personnes plus compétentes
              merci à vous et à bientôt
              0
            2. bravo c'est parfait merci à vous
              merci jordane45
              en espérant que ce code servira à d'autres noobs qui ce galèrent
              0