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 :
-
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.
-
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.).
-
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é
ShowModalest définie surFalse.
-
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 exempleMicrosoft Excel 14.0 Object Librarypour Excel 2010). - Cochez la case correspondante et cliquez sur OK.
-
Affichage de la UserForm Non Modale :
- Dans votre code VBA principal (dans un module standard), utilisez la commande
UserForm1.Show(en remplaçantUserForm1par le nom réel de votre UserForm) pour l’afficher. - Contrairement à
UserForm1.Show vbModal, l’absence devbModalrend la UserForm non modale par défaut, mais le réglage de la propriétéShowModalàFalseest la méthode explicite et recommandée.
- Dans votre code VBA principal (dans un module standard), utilisez la commande
-
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.
- Une fois la UserForm affichée avec
-
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 NextouOn Error GoTo). - Fermez explicitement la UserForm avec
Unload Medans un bouton de fermeture sur la UserForm elle-même pour libérer la mémoire.