[VBA-CATIAV5] Création d'interface avec des champs à remplir

davidus01 - 5 nov. 2012 à 10:12
 davidus01 - 28 nov. 2012 à 16:14
Bonjour,

Je me prénomme David. Actuellement étudiant en licence. Je ne connais peu le monde de la programmation ayant toujours été dans une filière très orientée "mécanique".

Dans le cadre d'un projet scolaire, je dois faire une interface pour remplir le noms des "parts". Je vais vous expliquer le fonctionnement de mon programme. Le programme doit me générer 4 parts avec les matériaux.

Le fonctionnement : je clique sur la Macro, cette dernière m'ouvre une fenêtre que j'ai déjà crée :



Ensuite je remplis les différents champs, et ces derniers me créent 4 parts avec les noms que j'ai mis.


J'ai essayé d'enregistrer une macro, mais je n'ai pas réussi à la lier avec l'interface


je vous remercie de votre aide

Cordialement

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 nov. 2012 à 13:04
Salut

Voilà la bonne technique à utiliser pour faire ce genre de manips :
- Dans le code du bouton qui valide les choix fait par l'utilisateur (Valider), tu caches la UserForm sans la décharger avec
Me.Hide

- Idem, Dans le code du bouton de sortie (Sortir), tu vas remettre à blanc les 4 textbox (puisqu'il veut sortir sans valider) :
TextBoxAPETE.Text = ""
TextBoxDENSE.Text = "" ' etc
puis tu caches la UserForm sans la décharger avec
Me.Hide

- Dans le code de la macro de demande d'affichage de la UserForm, il faut procéder comme ceci :
' Créer une instance de la UserForm originale
Dim maForme As UserForm2
' Charger la forme
Load maForme
' La forme est maintenant en mémoire, mais n'est pas encore affichée.
' Eventuellement, tu peux ici envoyer dans les TextBox des
'   infos de pré-saisies, exemple
maForme.TextBoxDENSE.Text = "Coucou"
' Affichage de la forme
maForme.Show
' Le programme vient de donner la main à la UserForm et
'   restera sur cette ligne tant que la UserForm est visible
' Les lignes de code qui suivent seront donc exécutées 
'   uniquement après que l'utilisateur ait cliqué sur le
'   bouton Valider ou Sortir
' Il faut donc savoir s'il y a des données ou pas :
If maForme.TextBoxAPETE.Text = "" And _
   maForme.TextBoxDENSE.Text = "" And _
   maForme.TextBoxBOARD.Text = "" And _
   maForme.TextBoxPIN.Text = "" Then
      ' Bouton Sortir utilisé
Else
      ' Bouton Valider utilisé : Récupération des données
      ' Exemple :
      maVariableAPETE = maForme.TextBoxAPETE.Text
      ' etc
End If
' Ensuite, il suffit de décharger la UserForm
UnLoad maForme

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Bonjour,
Veuillez m'excuser de mon retard.

J'ai suivi vos étapes, les boutons "valider" et sortie fonctionne très bien, par contre la fonction "maForme" ne fonctionne pas. je vous poste mon code entier.

Donc, j'ai renommé les cases où on doit écrire en "TextBox1"



Sub CATMain()



Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Add("Part")

Set part1 = partDocument1.Part

Set bodies1 = part1.Bodies

Set body1 = bodies1.Add()

part1.Update

Set body2 = bodies1.Add()


part1.Update

Set body3 = bodies1.Add()

part1.Update

Set body4 = bodies1.Add()

part1.Update

Set product1 = partDocument1.GetItem("Part1")


strPath = "H:\VBA\Project\ProjetVBA1.catvba"
strModule = "modMain"
strProcedure = "CATMain"


UserForm1.Show 0

UserForm1.TextBox1.Value


If UserForm1.TextBox1.Text = "" And _
   UserForm1.TextBox2.Text = "" And _
   UserForm1.TextBox3.Text = "" And _
   UserForm1.TextBox4.Text = "" Then
   

      
Else

End If




End Sub



Et pour ma part, j'aimerai enfaite que lorsque je lance la macro, cette dernière m'ouvre la userform, et ce que je vais écrire dans "Textbox1, 2,3,4 etc" va automatiquement remplir le "nom des parts"

Je vous remercie d'avance
0
Bonjour,

Quelqu'un pourrait m'aider ?
je vous remercie !
0
Rejoignez-nous