iLogic : le guide complet — Chapitre 6 / 7

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 :

  1. Le nom de la feuille
  2. Le titre de la colonne (tel qu'il apparaît dans la ligne d'en-tête)
  3. L'opérateur de comparaison ("=", "<", ">", "<=", ">=")
  4. 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

Coup de pouce Besoin d'un développement Inventor (iLogic, .NET, VBA, C++) ou Fusion 360 (Python, C++) ? Contactez-moi pour un devis gratuit.