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,

    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
  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. 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.
  4. 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. 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 ?