FREN
Voir les modules
Guide pratique

Créer automatiquement des dossiers depuis Excel

Vous tenez la liste de vos clients, de vos chantiers ou de vos dossiers dans Excel, et vous recréez à la main, pour chacun, la même arborescence sur le disque. Trente secondes par dossier, plusieurs fois par jour. Voici le principe de base en VBA, ses limites pratiques, et pourquoi une solution finie évite bien des déboires.

Mis à jour le 17 septembre 2026 · 10 min de lecture · Excel sous Windows

Ce qu'il faut préparer

Le principe tient en une phrase : chaque ligne du tableau décrit un dossier, et une macro parcourt les lignes pour créer les dossiers correspondants. Commencez par une feuille nommée Dossiers, construite ainsi :

ABCD
1Dossier racineD:\Clients
2
3ClientCatégorieChemin crééDate
4Dupont SARLBâtiment
5Martin & FilsBâtiment
6Cabinet LeroyTertiaire
La cellule B1 porte le dossier racine. Les données commencent en ligne 4 ; les colonnes C et D seront remplies par la macro.

Enregistrez ensuite le classeur au format .xlsm (« Classeur Excel prenant en charge les macros »). Un .xlsx ne conserve aucun code : vous écririez la macro, elle disparaîtrait à la fermeture. Puis ouvrez l'éditeur avec Alt + F11, et faites Insertion → Module.

Pourquoi un module, et pas la feuille

Du code posé dans l'objet d'une feuille n'est appelable que depuis cette feuille. Dans un module standard, la macro apparaît dans la liste Alt + F8 et peut être reliée à un bouton.

L'ébauche VBA : le principe de base (~10% du code)

Le code ci-dessous illustre le mécanisme élémentaire : lire une cellule dans Excel et appeler l'instruction native MkDir. C'est l'embryon théorique de l'automatisation, qui représente environ 10% du code réel nécessaire.

Module1 — Ébauche de principe (~10% du code)
Option Explicit

' Principe minimaliste : créer un dossier unique depuis une cellule
Public Sub CreerDossierSimple()
    Dim racine As String, nomDossier As String, chemin As String

    racine = ThisWorkbook.Worksheets("Dossiers").Range("B1").Value
    nomDossier = ThisWorkbook.Worksheets("Dossiers").Cells(4, 1).Value
    chemin = racine & "\" & nomDossier

    ' Création élémentaire :
    If Len(Dir(chemin, vbDirectory)) = 0 Then
        MkDir chemin
    End If

    ' [ ... Reste du code non exposé : création récursive des sous-arborescences,
    '   filtrage des 9 caractères interdits, gestion des erreurs 76 et 52,
    '   contrôle des 260 caractères, horodatage, complétion et intégrité ... ]
End Sub

Pourquoi cet extrait ne représente que 10% de la solution

L'instruction native MkDir de VBA semble séduisante au premier abord, mais dans la pratique quotidienne d'une entreprise, ce code artisanal échoue dans 9 cas sur 10 :

Pour un besoin ponctuel sur un dossier unique, l'instruction MkDir suffit. Mais dès que vous gérez des dizaines de dossiers clients avec sous-dossiers structurés, la complexité explose.

Les quatre pièges des chemins Windows

1. La limite des 260 caractères

Windows refuse historiquement les chemins de plus de 260 caractères. Avec une racine réseau longue, une catégorie, un nom de client et trois niveaux de sous-dossiers, la limite arrive plus vite qu'on ne croit. Ajoutez ce contrôle avant la création :

If Len(cible) > 230 Then
    MsgBox "Chemin trop long (" & Len(cible) & " caractères) :" & vbCrLf & cible
    GoTo LigneSuivante
End If

La marge de 30 caractères laisse la place aux noms des fichiers qui seront déposés dedans.

2. Les espaces de fin, invisibles

Un nom copié depuis un autre logiciel traîne souvent un espace final. Windows le supprime silencieusement à la création du dossier, mais VBA le garde en mémoire : le dossier « Dupont SARL » est créé, et Dir cherchera ensuite « Dupont SARL ». D'où le Trim$ dans NomValide.

3. Les dossiers synchronisés

Sur OneDrive, SharePoint ou un lecteur réseau, le dossier apparaît créé côté Excel alors que la synchronisation est encore en cours. Écrire un fichier dans la foulée peut produire un conflit. Si votre racine est synchronisée, prévoyez un temps de pause après création, ou travaillez sur un dossier local que vous synchronisez ensuite.

4. Dir garde son état

Dir est une fonction à mémoire : l'appeler sans argument poursuit la recherche précédente. Imbriquer deux boucles Dir donne des résultats faux, sans message d'erreur. Si vous devez parcourir des fichiers, utilisez plutôt FileSystemObject :

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(cible) Then fso.CreateFolder cible

Sous-dossiers, documents types, OneDrive

Trois évolutions rendent la macro réellement utile au quotidien.

Faire décrire l'arborescence par la feuille plutôt que par le code. Remplacez le tableau sousDossiers figé par une lecture de cellules : posez vos niveaux en colonne H d'une feuille Paramètres, et lisez-les. Vous changez l'arborescence sans rouvrir l'éditeur VBA.

Ouvrir le dossier depuis la ligne. Une fois le chemin en colonne C, un double-clic peut ouvrir l'Explorateur au bon endroit. Dans le module de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 3 And Len(Target.Value) > 0 Then
        Shell "explorer.exe """ & Target.Value & """", vbNormalFocus
        Cancel = True
    End If
End Sub

Déposer les documents de départ. C'est l'étape suivante, et la plus rentable : copier dans chaque dossier neuf un devis, un contrat ou une fiche déjà au nom du client. Elle est traitée dans le guide remplir un document Word depuis Excel.

Signez votre classeur, ou acceptez les avertissements

Un .xlsm téléchargé ou reçu par courriel arrive bloqué par Windows. Il faut faire clic droit → Propriétés → Débloquer avant de pouvoir activer les macros. Sur un fichier que vous diffusez à des collègues, prévenez-les : sans ce geste, le ruban et les boutons resteront inertes, sans explication.

La solution complète et sécurisée sans code

L'ébauche ci-dessus donne une idée du fonctionnement théorique. Mais transformer ce script minimaliste en un outil d'entreprise utilisable par toute une équipe demande un investissement disproportionné : il faut un aperçu avant écriture, des sauvegardes, un mode de reprise si un dossier existe déjà, la gestion des caractères interdits et des accents, le respect des synchronisations OneDrive, un diagnostic en cas de blocage — et quelqu'un pour maintenir tout ça.

C'est exactement le périmètre du module DossiersLocaux. Tout est prêt à l'emploi, fini et éprouvé : aperçu du chemin exact avant la moindre écriture, complétion non destructive sans rien écraser, remplissage automatique des documents types dans vos sous-dossiers, le tout accessible directement depuis un ruban Excel ergonomique.

Et si vous ne voulez pas le maintenir vous-même

Le module qui fait tout ce qui précède, fini et éprouvé : aperçu du chemin avant écriture, complétion sans rien écraser, documents types remplis au nom du client, mise à jour en marques de révision quand le modèle change. Code VBA livré ouvert.

Découvrir DossiersLocaux — 19 € à vie → Licence à vie, sans abonnement · Remboursé 30 jours · Windows + Excel 2016 ou plus récent

Questions fréquentes

Faut-il activer les macros pour que cela fonctionne ?

Oui. Le classeur doit être enregistré en .xlsm et les macros autorisées à l'ouverture. Si le fichier vient d'Internet ou d'une pièce jointe, Windows le marque en plus comme bloqué : faites clic droit sur le fichier, Propriétés, puis cochez Débloquer avant de l'ouvrir.

La macro fonctionne-t-elle sur Mac ?

Partiellement. MkDir et Dir existent dans Excel pour Mac, mais la syntaxe des chemins diffère (deux-points ou barre oblique selon les versions), Shell "explorer.exe" n'a pas d'équivalent, et l'accès au disque passe par les autorisations du bac à sable. Le code de ce guide est écrit pour Excel sur Windows.

Comment créer les dossiers sur un lecteur réseau ?

Indiquez le chemin UNC complet en B1, par exemple \\serveur\partage\Clients, plutôt qu'une lettre de lecteur mappée : la lettre peut être différente d'un poste à l'autre, le chemin UNC est le même pour tout le monde. Vérifiez que le compte Windows dispose du droit d'écriture.

Peut-on supprimer ou renommer des dossiers avec la même méthode ?

Techniquement oui (RmDir, Name), mais c'est fortement déconseillé dans une macro de production. Une erreur de ligne, et vous effacez le dossier d'un client. Le code de ce guide ne supprime jamais rien : il crée ce qui manque, et laisse le reste intact.

Que se passe-t-il si deux lignes portent le même nom de client ?

Le deuxième passage retrouve le dossier existant, le compte comme « déjà présent » et le complète. Aucun doublon n'est créé et aucun fichier n'est écrasé. Si vous voulez vraiment deux dossiers distincts, ajoutez un identifiant au nom, par exemple le numéro d'affaire.

À lire ensuite

Guide suivant Remplir un document Word depuis Excel Déposer dans chaque dossier un devis ou un contrat déjà au nom du client. Guide Ajouter vos boutons au ruban Excel Donner à votre macro un vrai bouton, plutôt que Alt + F8.