Catia VBA : UserForm non modale avec bibliothèques Excel

Comment créer une UserForm non modale dans Catia VBA pour afficher des résultats tout en permettant la manipulation de la fenêtre graphique, et comment charger les bibliothèques Excel nécessaires à cette démarche ?

L’objectif est de créer une UserForm non modale dans Catia VBA pour afficher des informations sans bloquer l’interaction avec la fenêtre graphique, ce qui nécessite le chargement des bibliothèques Excel.

Voici la démarche experte pour y parvenir :

  1. Comprendre la limitation des MsgBox : Les MsgBox sont intrinsèquement modales. Elles bloquent toute interaction avec l’application hôte (ici, Catia) jusqu’à leur fermeture. Pour une interaction simultanée, une UserForm est indispensable.

  2. Création de la UserForm :

    • Dans l’éditeur VBA de Catia (ALT+F11), insérez une nouvelle UserForm (Insertion > UserForm).
    • Concevez votre interface utilisateur sur cette UserForm (boutons, labels, zones de texte, etc.).
  3. Rendre la UserForm Non Modale :

    • Sélectionnez la UserForm dans le projet VBA.
    • Dans la fenêtre des propriétés (F4), assurez-vous que la propriété ShowModal est définie sur False.
  4. Chargement des Bibliothèques Excel (Références) :

    • Pour interagir avec Excel (par exemple, pour lire ou écrire des données dans un fichier Excel qui alimenterait la UserForm, ou pour utiliser des fonctions Excel), vous devez ajouter une référence à la bibliothèque d’objets Excel.
    • Dans l’éditeur VBA, allez dans Outils > Références....
    • Recherchez dans la liste Microsoft Excel [Version] (la version dépend de celle installée sur votre système, par exemple Microsoft Excel 14.0 Object Library pour Excel 2010).
    • Cochez la case correspondante et cliquez sur OK.
  5. Affichage de la UserForm Non Modale :

    • Dans votre code VBA principal (dans un module standard), utilisez la commande UserForm1.Show (en remplaçant UserForm1 par le nom réel de votre UserForm) pour l’afficher.
    • Contrairement à UserForm1.Show vbModal, l’absence de vbModal rend la UserForm non modale par défaut, mais le réglage de la propriété ShowModal à False est la méthode explicite et recommandée.
  6. Interaction avec la Fenêtre Graphique Catia :

    • Une fois la UserForm affichée avec ShowModal = False, vous pouvez retourner dans Catia, sélectionner des éléments, exécuter d’autres commandes, tout en gardant la UserForm visible.
  7. Exemple de Code (Module) :

    Sub AfficherMaUserForm()
        ' Assurez-vous que la référence à Microsoft Excel est activée
        ' Si vous avez besoin d'interagir avec Excel, sinon ce n'est pas obligatoire pour juste afficher la UserForm
    
        ' Charger et afficher la UserForm non modale
        UserForm1.Show
    End Sub
    
    Sub FermerMaUserForm()
        ' Pour fermer la UserForm depuis un autre endroit si nécessaire
        Unload UserForm1
    End Sub
    

Bonnes pratiques :

  • Nommez vos UserForms et contrôles de manière descriptive (ex: frmResultats, cmdFermer).
  • Utilisez des événements de la UserForm (ex: UserForm_Initialize, UserForm_Activate) pour charger les données ou configurer l’interface au moment opportun.
  • Si vous manipulez des données Excel, assurez-vous de gérer correctement les erreurs (On Error Resume Next ou On Error GoTo).
  • Fermez explicitement la UserForm avec Unload Me dans un bouton de fermeture sur la UserForm elle-même pour libérer la mémoire.