Connecter Dynamo à Excel pour les données BIM : guide pratique

Excel reste le tableur universel du BTP. Programmes de pièces, nomenclatures, tableaux de surfaces : vos données arrivent dans Excel avant d’aller dans Revit, ou doivent y retourner pour être partagées. Dynamo crée un lien bidirectionnel entre les deux outils, ce qui supprime la saisie manuelle et les erreurs de transcription. Ce guide montre comment lire un fichier Excel, importer dans Revit, exporter des nomenclatures et générer des vues automatiquement.

⚡ Résumé de l’article

  • Lire un fichier Excel avec le nœud Data.ImportExcel pour récupérer les données.
  • Écrire dans Excel via Data.ExportExcel en spécifiant feuille et plage.
  • Importer des données Excel permet de créer ou modifier des éléments Revit en masse.
  • Exporter les nomenclatures Revit vers Excel facilite reporting et chiffrage.
  • Toujours fermer Excel avant d exécuter le script pour éviter les erreurs de verrouillage.
  • Bonne pratique : structurer les données en tableaux propres et tester sur un échantillon.

Lire un fichier Excel avec Dynamo

La connexion Excel-Dynamo repose sur deux nœuds fondamentaux : un pour lire, un pour écrire. Commençons par la lecture.

Le nœud Excel.ReadFromFile

Le nœud Excel.ReadFromFile lit un fichier .xlsx et retourne son contenu sous forme de liste de listes : chaque ligne du tableur devient une sous-liste, et chaque cellule devient un élément de cette sous-liste. Il prend trois entrées :

  • file : le chemin du fichier Excel (nœud File Path).
  • sheetName : le nom de la feuille à lire (nœud String).
  • readAsStrings : booléen — mettre True pour lire toutes les cellules comme du texte (évite les problèmes de conversion de types).

La première ligne est généralement l’en-tête. Utilisez List.RestOfItems pour l’exclure et ne travailler qu’avec les données.

⚠️ Excel doit être fermé

Le fichier Excel doit être entièrement fermé pendant la lecture par Dynamo. Si le fichier est ouvert dans Excel (même en lecture seule), le nœud retourne une erreur ou des données vides. Fermez Excel avant de lancer votre script, puis rouvrez-le si nécessaire après l’exécution.

Naviguer dans les données lues

La structure « liste de listes » (lignes → colonnes) n’est pas toujours pratique pour accéder aux colonnes. Le nœud List.Transpose inverse la structure : il transforme une liste de lignes en liste de colonnes. Après transposition, l’index 0 correspond à la première colonne, l’index 1 à la deuxième, etc. Utilisez List.GetItemAtIndex pour extraire une colonne spécifique.

Accéder à une colonne spécifique

1. Excel.ReadFromFile → liste de lignes.

2. List.RestOfItems → supprime la ligne d’en-tête.

3. List.Transpose → transforme en liste de colonnes.

4. List.GetItemAtIndex, index = 0 → première colonne (ex : identifiants).

5. List.GetItemAtIndex, index = 1 → deuxième colonne (ex : valeurs à importer).

Écrire des données dans Excel

L’export de Revit vers Excel se fait avec le nœud Excel.WriteToFile. Il prend quatre entrées :

  • filePath : chemin du fichier de destination (existant ou nouveau).
  • sheetName : nom de la feuille cible.
  • startRow et startCol : position de départ (généralement 0, 0 pour commencer en A1).
  • data : les données à écrire, sous forme de liste de listes (même structure que la lecture).
  • overWrite : booléen — True pour écraser les données existantes.

Pour construire le format liste de listes attendu par Excel.WriteToFile, utilisez List.Create pour assembler vos colonnes, puis List.Transpose pour convertir la structure colonnes → lignes (le format attendu pour l’écriture).

Importer des données Excel dans Revit

L’import Excel → Revit est l’un des cas d’usage les plus fréquents en production BIM. Il permet de remplir automatiquement les paramètres Revit depuis un programme de pièces, une liste d’équipements ou toute autre source de données structurées.

Workflow d’import : programme de pièces

Importer un programme de pièces depuis Excel

Contexte : vous avez un fichier Excel avec une colonne « Numéro de pièce » et une colonne « Finition sol ». Vous voulez remplir le paramètre « Finition_Sol » dans Revit sur chaque pièce correspondante.

1. Lisez le fichier Excel (Excel.ReadFromFile), excluez l’en-tête (List.RestOfItems), transposez (List.Transpose).

2. Extrayez la colonne « Numéro » (index 0) et la colonne « Finition sol » (index 1).

3. Récupérez toutes les pièces du projet (All Elements of Category → Pièces).

4. Lisez le paramètre « Number » sur chaque pièce Revit.

5. Utilisez List.IndexOf pour trouver la position de chaque numéro de pièce Revit dans la liste Excel.

6. Utilisez List.GetItemAtIndex pour récupérer la finition correspondante.

7. Écrivez la finition dans le paramètre Revit avec Element.SetParameterByName.

Ce workflow est réutilisable pour n’importe quel type de données : finitions, surfaces cibles, programmes d’équipements, données de patrimoine. Le point clé est toujours l’identifiant unique qui fait le lien entre la ligne Excel et l’élément Revit.

L’importance de l’identifiant unique

Le maillon critique de tout import Excel → Revit, c’est l’identifiant qui permet de faire correspondre une ligne Excel à un élément Revit. Plusieurs options selon votre contexte :

  • Numéro de pièce : pour les pièces Revit, le paramètre « Number » est l’identifiant naturel.
  • Mark : pour les équipements, portes, fenêtres — le paramètre « Mark » est l’identifiant de référence.
  • ElementId : l’identifiant interne Revit, unique et immuable dans un projet. À utiliser quand aucun autre identifiant n’est fiable.
  • Paramètre partagé dédié : créez un paramètre partagé « Code_BIM » que vous renseignez manuellement une fois, puis utilisez comme identifiant permanent.

Automatisez vos échanges de données BIM

Notre formation Dynamo couvre la connexion Excel, l’automatisation de paramètres, la création de vues et l’introduction au Python.

Voir la formation Dynamo →

Exporter des nomenclatures Revit vers Excel

L’export inverse est tout aussi précieux : extraire des données du modèle Revit vers Excel pour les partager avec des intervenants qui n’ont pas Revit, ou pour les traiter dans un tableur avant de les réimporter.

Workflow d’export : données des pièces

  • Étape 1 : récupérez tous les éléments de la catégorie souhaitée.
  • Étape 2 : lisez les paramètres qui vous intéressent (nom, surface, niveau, matériau…) avec Element.GetParameterValueByName — une lecture par paramètre.
  • Étape 3 : assemblons les colonnes avec List.Create : chaque nœud de lecture fournit une colonne.
  • Étape 4 : transposez avec List.Transpose pour passer en liste de lignes.
  • Étape 5 : ajoutez une ligne d’en-tête avec List.Join ou List.Insert.
  • Étape 6 : écrivez dans Excel avec Excel.WriteToFile.

Ce workflow remplace avantageusement les nomenclatures Revit pour les exports ponctuels. L’avantage : vous avez un contrôle total sur les colonnes, l’ordre, le formatage, et vous pouvez exporter simultanément des données de plusieurs catégories dans des feuilles différentes du même fichier Excel.

J’utilise régulièrement ce type de script en mission de coordination BIM : exporter en une exécution la liste des pièces, des murs et des équipements dans un fichier de suivi partagé avec le maître d’ouvrage. Ce qui prenait une demi-journée de copier-coller depuis les nomenclatures Revit se fait en 30 secondes.

Créer des vues et feuilles depuis un tableur

Un cas d’usage avancé qui illustre toute la puissance de la connexion Dynamo-Excel : créer automatiquement des vues et des feuilles dans Revit à partir d’un tableau de planification.

Structure du fichier Excel pour la création de vues

Préparez votre Excel avec les colonnes suivantes :

  • Nom de la vue : le nom qui apparaîtra dans Revit.
  • Type de vue : Plan de niveau, Élévation, Section…
  • Niveau : le niveau Revit sur lequel créer le plan.
  • Gabarit de vue : le nom du gabarit à appliquer.
  • Numéro de feuille : si la vue doit être placée sur une feuille.
  • Nom de feuille : le nom de la feuille de destination.
Créer des plans de niveaux depuis Excel

1. Lisez le fichier Excel et extrayez les colonnes nécessaires.

2. Récupérez les niveaux Revit correspondants : All Elements of Category (Niveaux) → lisez le paramètre « Name » → List.IndexOf pour trouver le niveau correspondant au nom dans Excel.

3. Créez les vues de plan : nœud FloorPlanView.ByLevel, connectez la liste de niveaux filtrés.

4. Renommez les vues : Element.SetParameterByName, parameterName = « View Name », value = colonne « Nom de la vue » depuis Excel.

5. Appliquez les gabarits : View.SetViewTemplate (package Clockwork) avec le nom du gabarit depuis Excel.

6. Créez les feuilles : Sheet.ByNameNumberTitleBlockAndViews, connectez noms et numéros depuis Excel.

Sur un projet avec 20 niveaux et 3 types de vues par niveau, ce script crée 60 vues et feuilles en quelques secondes. Manuellement, c’est 2 à 3 heures de travail répétitif.

Bonnes pratiques et pièges à éviter

💡 Structurez votre Excel pour Dynamo

Une colonne = un paramètre : ne mélangez jamais plusieurs informations dans la même cellule.

Une ligne = un élément : chaque ligne représente un seul élément Revit.

Première ligne = en-têtes : toujours. Vous l’exclurez avec List.RestOfItems.

Pas de cellules fusionnées : elles perturbent la lecture par Dynamo et génèrent des valeurs null imprévisibles.

Pas de formules dans les cellules source : si possible, copiez-collez les valeurs calculées avant d’utiliser le fichier avec Dynamo. Les formules peuvent retourner des valeurs inattendues selon le contexte de lecture.

⚠️ Les types de données Excel → Dynamo

Excel stocke les nombres avec des décimales, les dates comme des entiers, les booléens comme TRUE/FALSE. Quand Dynamo lit ces valeurs, il les convertit selon ses propres règles. Activez toujours readAsStrings = True en première lecture pour éviter les surprises — puis convertissez les types manuellement avec String.ToNumber ou bool selon les besoins.

Tester avant de lancer sur tout le projet

Avant de lancer un import sur tout le projet, limitez toujours votre test aux 5 premières lignes Excel (List.TakeItems, count = 5) et aux 5 premiers éléments Revit correspondants. Vérifiez que les correspondances sont correctes et que les valeurs sont bien appliquées avant de supprimer la limite.

Maîtrisez la connexion Dynamo-Excel

Notre formation Dynamo couvre l’import/export Excel, l’automatisation de paramètres et la création de vues. Formez-vous à votre rythme.

Découvrir la formation Dynamo →

Questions fréquentes sur Dynamo et Excel

Quelles versions d’Excel sont compatibles avec Dynamo ?

Dynamo lit les fichiers au format .xlsx (Excel 2007 et versions ultérieures). Le format .xls (ancien format Excel 97-2003) n’est pas supporté directement — convertissez-le en .xlsx avant utilisation. Les fichiers .csv peuvent être lus via des nœuds de lecture de fichiers texte, mais le nœud Excel.ReadFromFile ne les gère pas nativement.

Comment gérer les correspondances quand les identifiants ne se trouvent pas ?

Le nœud List.IndexOf retourne -1 quand un élément n’est pas trouvé dans la liste. Utilisez le nœud != pour détecter les -1, puis List.FilterByBoolMask pour séparer les éléments trouvés et non trouvés. Traitez séparément les éléments sans correspondance : affichez-les dans un nœud Watch pour diagnostic, ou écrivez-les dans un onglet « Erreurs » d’un fichier Excel de rapport.

Est-il possible de connecter Dynamo à Google Sheets ou à d’autres tableurs ?

Pas nativement. Dynamo gère uniquement les fichiers .xlsx locaux ou accessibles via un chemin réseau. Pour utiliser Google Sheets, exportez votre feuille en .xlsx, travaillez avec Dynamo, puis réimportez dans Google Sheets si nécessaire. Des packages tiers existent pour certaines connexions cloud, mais ils ne sont pas maintenus officiellement et peuvent être instables.

Peut-on créer plusieurs feuilles Excel en un seul script ?

Oui. Utilisez plusieurs nœuds Excel.WriteToFile ciblant le même fichier mais des noms de feuilles différents. Exécutez-les séquentiellement (passez la sortie de l’un en entrée de l’autre via un nœud List.Create vide) pour éviter les conflits d’accès au fichier. Chaque appel ajoute ou met à jour une feuille dans le même classeur Excel.

Dynamo peut-il mettre en forme (couleurs, polices) le fichier Excel généré ?

Non. Les nœuds natifs Excel.WriteToFile écrivent uniquement les valeurs — pas le formatage. Si vous avez besoin d’un Excel formaté, écrivez d’abord les données avec Dynamo, puis appliquez le formatage depuis Excel. Pour un formatage automatique avancé, des packages comme DynaWorks ou des scripts Python dans Dynamo (utilisant la bibliothèque openpyxl) permettent de gérer les styles, mais cette approche dépasse le niveau débutant.

Sources et références

  • Documentation officielle Dynamo — dynamobim.org
  • Dynamo Primer — Chapitre sur les données et les listes
  • Autodesk Knowledge Network — Nœuds Excel dans Dynamo for Revit
  • Package Rhythm (John Pierson) — Nœuds complémentaires pour feuilles et vues
Mehdi — Formateur BIM, Les Gaulois Formateurs

Mehdi — Formateur BIM, Les Gaulois Formateurs

Formateur BIM basé à Montpellier depuis 2016, je forme des projeteurs, ingénieurs et architectes à la maîtrise de Revit, Navisworks et Dynamo. Mes formations allient rigueur technique et pédagogie terrain : chaque technique présentée ici a été testée sur de vrais projets et affinée au contact de centaines d’apprenants.

Suivre sur LinkedIn
Retour en haut