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. Contributeur
    bonjour, par exemple:
    MkDir("C:\DossierExistant\NouveauSousDossier\") 
    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 ?

      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
        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!
          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.
        2. 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
          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)
        3. 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
          

          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
          2. bravo c'est parfait merci à vous
            merci jordane45
            en espérant que ce code servira à d'autres noobs qui ce galèrent