Lire et écrire dans Excel avec GoExcel
Les fichiers Excel sont omniprésents en bureau d'études : tableaux de dimensions normalisées, catalogues de composants, cahiers des charges, données client. iLogic propose une interface dédiée — GoExcel — pour lire et écrire dans des classeurs Excel directement depuis vos règles.
La liaison de paramètres classique
Avant de parler de GoExcel, rappelons qu'Inventor propose déjà un mécanisme natif pour lier des paramètres à un fichier Excel. Dans le gestionnaire de paramètres, vous pouvez importer ou lier un classeur .xlsx pour piloter les valeurs de vos paramètres.
Ce mécanisme est pratique mais impose une structure bien précise : le classeur doit contenir des colonnes spécifiques (nom du paramètre, valeur, unité, etc.) dans un format qu'Inventor attend. Si votre fichier Excel ne respecte pas ce format — par exemple un catalogue fournisseur, un tableau de normes ou un fichier issu d'un autre logiciel — vous ne pouvez pas l'utiliser directement.
GoExcel : la liberté totale
GoExcel lève cette contrainte. Avec GoExcel, vous pouvez aller piocher n'importe où dans une feuille Excel : lire la cellule B12, chercher une valeur dans une colonne, écrire un résultat dans une cellule précise. Le classeur n'a besoin d'aucune structure particulière — vous accédez aux données telles qu'elles sont.
Ouvrir un classeur
La première étape est d'ouvrir le fichier Excel :
GoExcel.Open("C:\Données\catalogue_rondelles.xlsx", "Dimensions")
Le premier argument est le chemin complet du fichier .xlsx. Le second est le nom de la feuille (sheet) à utiliser. Si le fichier est déjà ouvert dans Excel, iLogic utilise l'instance en cours.
Astuce — Pour éviter les chemins absolus qui cassent quand le projet change de dossier, vous pouvez construire le chemin relativement au document Inventor avec
ThisDoc.Path:GoExcel.Open(ThisDoc.Path & "\catalogue_rondelles.xlsx", "Dimensions")
Lire une cellule
Pour lire la valeur d'une cellule, utilisez GoExcel.CellValue en indiquant la feuille, la ligne et la colonne :
' Lire la cellule B3 (ligne 3, colonne 2)
valeur = GoExcel.CellValue("Dimensions", 3, 2)
Les indices de ligne et de colonne commencent à 1. La ligne 1 correspond généralement à la ligne d'en-tête du tableau.
Écrire dans une cellule
La même fonction sert à écrire — il suffit de l'utiliser en affectation :
' Écrire dans la cellule C5 (ligne 5, colonne 3)
GoExcel.CellValue("Dimensions", 5, 3) = diametre_exterieur
Chercher une valeur avec FindRow
La fonction GoExcel.FindRow est l'une des plus utiles. Elle parcourt une colonne à la recherche d'une valeur et positionne un curseur interne sur la ligne trouvée :
' Chercher la ligne où la colonne "Référence" contient "M10"
GoExcel.FindRow("Dimensions", "Référence", "=", "M10")
Les arguments sont :
- Le nom de la feuille
- Le titre de la colonne (tel qu'il apparaît dans la ligne d'en-tête)
- L'opérateur de comparaison (
"=","<",">","<=",">=") - La valeur recherchée
Une fois la ligne trouvée, vous pouvez lire les autres colonnes de cette même ligne avec GoExcel.CurrentRowValue :
GoExcel.FindRow("Dimensions", "Référence", "=", "M10")
diametre = GoExcel.CurrentRowValue("Diamètre")
longueur = GoExcel.CurrentRowValue("Longueur")
masse = GoExcel.CurrentRowValue("Masse")
C'est le schéma le plus courant : vous cherchez une ligne par un critère, puis vous lisez toutes les colonnes qui vous intéressent.
Fermer le classeur
Après avoir lu ou écrit vos données, fermez le classeur :
' Fermer sans enregistrer
GoExcel.Close()
' Ou fermer en enregistrant les modifications
GoExcel.Save()
GoExcel.Save() enregistre et ferme le classeur. GoExcel.Close() ferme sans enregistrer. Si vous avez seulement lu des données, GoExcel.Close() suffit.
Exemple complet : rondelle pilotée par un catalogue Excel
Imaginons un classeur catalogue_rondelles.xlsx avec une feuille "Normes" structurée ainsi :
| Diamètre intérieur | Diamètre extérieur | Épaisseur |
|---|---|---|
| 4 | 9 | 0.8 |
| 5 | 10 | 1 |
| 6 | 12 | 1.6 |
| 8 | 16 | 1.6 |
| 10 | 20 | 2 |
| 12 | 24 | 2.5 |
La règle suivante lit les dimensions normalisées en fonction du diamètre intérieur choisi par l'utilisateur :
' Ouvrir le catalogue
GoExcel.Open(ThisDoc.Path & "\catalogue_rondelles.xlsx", "Normes")
' Chercher la ligne correspondant au diamètre intérieur
GoExcel.FindRow("Normes", "Diamètre intérieur", "=", diametre_interieur)
' Lire les dimensions associées
diametre_exterieur = GoExcel.CurrentRowValue("Diamètre extérieur")
epaisseur = GoExcel.CurrentRowValue("Épaisseur")
' Fermer le classeur
GoExcel.Close()
Quand l'utilisateur change diametre_interieur (par exemple de 6 à 10), la règle s'exécute automatiquement (grâce à la variable bleue), va chercher la bonne ligne dans le fichier Excel, et met à jour diametre_exterieur et epaisseur.
Bonnes pratiques
Toujours fermer le classeur
Un fichier Excel ouvert par GoExcel reste verrouillé tant qu'il n'est pas fermé. Si votre règle s'interrompt avant le GoExcel.Close() (par exemple à cause d'une erreur), le fichier peut rester bloqué. Pensez à gérer ce cas :
Try
GoExcel.Open(ThisDoc.Path & "\catalogue.xlsx", "Données")
' ... lecture / écriture ...
GoExcel.Close()
Catch
GoExcel.Close()
Throw ' Relancer l'erreur pour qu'elle apparaisse dans le journal
End Try
Préférer FindRow à des indices en dur
Plutôt que de lire GoExcel.CellValue("Feuille", 5, 3) en comptant les lignes et les colonnes à la main, utilisez FindRow et CurrentRowValue avec les noms de colonnes. Votre règle sera plus lisible et résistera aux insertions de lignes ou de colonnes dans le classeur.
Garder les fichiers Excel proches du projet
Placez vos fichiers Excel dans le même dossier que vos documents Inventor (ou dans un sous-dossier) et utilisez ThisDoc.Path pour construire le chemin. Cela évite les chemins absolus qui cassent quand le projet est déplacé ou partagé avec un collègue.
GoExcel vs liaison de paramètres : que choisir ?
| Critère | Liaison de paramètres | GoExcel |
|---|---|---|
| Structure du fichier Excel | Imposée par Inventor | Libre |
| Configuration | Dans le gestionnaire de paramètres, sans code | Dans une règle iLogic |
| Recherche par critère | Non | Oui (FindRow) |
| Écriture dans Excel | Non | Oui |
| Cas d'usage | Pilotage simple de paramètres | Catalogues, normes, échanges de données |
En résumé : la liaison de paramètres convient quand vous contrôlez le format du fichier Excel et que vous voulez simplement piloter des paramètres. GoExcel est le bon choix quand le fichier Excel existe déjà dans un format que vous ne maîtrisez pas, quand vous avez besoin de chercher une valeur par critère, ou quand vous voulez écrire des résultats dans le classeur.
Résumé
| Fonction | Description |
|---|---|
GoExcel.Open(fichier, feuille) |
Ouvre un classeur Excel sur une feuille donnée |
GoExcel.CellValue(feuille, ligne, colonne) |
Lit ou écrit la valeur d'une cellule |
GoExcel.FindRow(feuille, colonne, opérateur, valeur) |
Cherche une ligne par critère et positionne le curseur |
GoExcel.CurrentRowValue(colonne) |
Lit une valeur sur la ligne trouvée par FindRow |
GoExcel.Close() |
Ferme le classeur sans enregistrer |
GoExcel.Save() |
Enregistre et ferme le classeur |
Besoin d'un développement Inventor (iLogic, .NET, VBA, C++) ou Fusion 360 (Python, C++) ? Contactez-moi pour un devis gratuit.