fabientoupeti Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Bonjour à tous,je suis un petit nouveau dans le monde de VB ( 3 mois d'ancienneté alors je ne connais pas toutes les ficelles du métier et là je crois que j'ai besoin df'aide parce que je suis comme on dit un peu perdu) J'utilise VB avec CATIA en faisant de la macro pour creer une aorte abdominale Ce que je souhaite faire : créer un formulaire dynamique contenant un nombre de lignes spécifiées. chaque ligne correspond à un cercle avec son centre, son rayon, et l'épaisseur de la paroi de l'aorte entre cercles "capa". voici ce que j'ai fait jusqu'à présent (je pose directement le code ca sera plus parlant) comme ça avec un copier/coller vous pourrez tout de suite voir ce que ça donne. Dans un form qui s'appelle definicion_manocreer a la main 3 boutons commandes comme sur l'imagecommand1=creacióncommand2=OKcommand3 =cancelar 2 textboxtextbox1 fera reference à cantidad et textbox2 fera ref à distancia (non utilisé pour l'instant) et 4 label au dessus de chaque colonne de textboxradioexcen Yexcen Zespesor '-------------------------------------- 'L'UserForm doit préalablement contenir un bouton nommé CommandButton1Option Explicit Private Sub CommandButton1_Click() cantidad = Replace(definicion_mano.TextBox1.Value, ".", ",") Dim capa As ControlDim rad As ControlDim excenY As ControlDim excenZ As ControlDim espe As ControlDim i As Integer '--------------------------------------------------------------------------For i = 1 To cantidad 'boucle pour la création des label capa Set capa = definicion_mano.Controls.Add("forms.Label.1") With capa .Name = "capa" & i - 1 .Object.Caption = "capa" & i - 1 .left = 90 .top = 18 * i + 5 .width = 60 .height = 20 End With Next i'---------------------------------------------------------------------------- For i = 1 To cantidad 'boucle pour la création des textbox radio Set rad = definicion_mano.Controls.Add("forms.TextBox.1") With rad .Name = "textrad" & i - 1 .left = 138 .top = 18 * i + 5 .width = 40 .height = 20 End With Next i For i = 1 To cantidad 'boucle pour la création des textbox exc Y Set excenY = definicion_mano.Controls.Add("forms.TextBox.1") With excenY .Name = "textexcY" & i - 1 .left = 203 '(11 de plus que label.left) .top = 18 * i + 5 .width = 40 .height = 20 End WithNext i For i = 1 To cantidad 'boucle pour la création des textbox exc Z Set excenZ = definicion_mano.Controls.Add("forms.TextBox.1") With excenZ .Name = "textexcZ" & i - 1 .left = 275 '(11 de plus que label.left) .top = 18 * i + 5 .width = 40 .height = 20 End WithNext i For i = 1 To cantidad - 1 'boucle pour la création des textbox espesor Set espe = definicion_mano.Controls.Add("forms.TextBox.1") With espe .Name = "textespesor" & i - 1 .left = 338 '4 de moins que label left .top = 18 * i + 15 .width = 40 .height = 20 End WithNext i End Sub Private Sub CommandButton2_Click()creation2 = "oui"definicion_mano.HideEnd SubPrivate Sub CommandButton3_Click()creation2 = "non"definicion_mano.HideEnd Sub Dans un module avec n'importe quel nomSub CATMain()definicion_mano.Show If creation2 = "oui" ThenElse MsgBox "comando cancelado por el usuario", vbOKOnly, "Error"End IfEnd Sub Dans un autre module avec n'importe quel nomOption ExplicitPublic creation2 As StringPublic cantidad As Double maintenant que je viens de poser mon code, voici ce qu'il faut faire pour l'utiliser: ecrire une valeur dans la textbox1 et cliquer sur creaciónun nombre de lignes avec capaX se creer. maintenant passons aux questions et problèmes: si je lance deux fois de suite mon prog la valeur entrée la preñiere fois reste et mon formulaire ne se reactualise pas automatiquement.(en particulier quand je veux mettre une valeur plus petite la seconde fois) Comment réutiliser les valeurs rentrées à la main dans mon formulaire afin de créer mon aorte dans CATIA (ne serait que savoir quoi mettre dans MsgBox pour retrouver la valeur renseigner par exemple pour radio de capa0). Et pour finir est ce que je pars sur la bonne voie bien ou pas? y a t'il une manière plus simple de faire cela? Vais-je être obligé d'utiliser un module de classe? voilivoilou Merci d'avance Fabientoupetips:les noms sont en espagnol parce que je suis en stage en espagne en ce moment, voilà vous savez tout.
sechanbask Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Bon j'ai pas tout compris mais j'ai trouvé la solution pour ça : si je lance deux fois de suite mon prog la valeur entrée la preñiere fois reste et mon formulaire ne se reactualise pas automatiquement.(en particulier quand je veux mettre une valeur plus petite la seconde fois) Je ne sais pas comment on peut supprimer les contrôles 1 à 1 mais on peut en déchargement le programme localement (on ne le décharge pas de catia...) il faut faire : Private Sub CommandButton3_Click() creation2 = "non" Unload definicion_mano 'déchargement des modifications apportées à la userform definicion_mano.Hide ' n'est pas indispensable End Sub pareil pour les autres boutons si tu veux réinitialiser la userform... je suis utilisateur d'autocad alors je ne pense pas que je puisse d'aider plus sauf si tu me donnes plus de détails sur les commandes... Bien à toi. Un programmeur qui apprends sans aider apprend pas grand chose... ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
fabientoupeti Posté(e) le 30 mai 2007 Auteur Posté(e) le 30 mai 2007 merci beaucoup sechanbask, je ne connaissais pas ça et ça fonctionne du feu de dieu! qu'est ce que tu aimerais savoir sur les commandes? hier je croyais avoir tout dit... voilivoilou merci encore pour ton aide fabientoupeti
fabientoupeti Posté(e) le 30 mai 2007 Auteur Posté(e) le 30 mai 2007 rebonjour j'ai passé toute ma journée à chercher une solution mais je n'y arrive pas tout seul.mon probleme est la recuperation des valeurs de mes textbox créées j'ai essayé pas mal de truc mais la seule chose que je parviens a faire c'est recuperer le valeur de la derniere textbox en ecrivant MsgBox rad.value voici le bout de programmeFor i = 1 To cantidad 'boucle pour la création des textbox radio Set rad = definicion_mano.Controls.Add("forms.TextBox.1") With rad .Name = "textrad" & i - 1 'je n'arrive pas a reutiliser ce nom dans la suite de mon prog .left = 138 .top = 18 * i + 5 .width = 40 .height = 20 .Value = i End WithNext i Quand j'ecris Msgbox textrad0 ou Msgbox textrad1 ou un autre chiffre j'ai un message d'erreur. peut etre que j'oublie une chose essentielle plus grosse que moi??? quelqu'un aurait-il une piste pour moi? parce que là je commence à désespérer Merci d'avance pour vos réponses fabientoupeti
sechanbask Posté(e) le 30 mai 2007 Posté(e) le 30 mai 2007 j'ai pas répondu à ta deuxième question car je ne l'ai pas bien comprise. Comment réutiliser les valeurs rentrées à la main dans mon formulaire afin de créer mon aorte dans CATIA (ne serait que savoir quoi mettre dans MsgBox pour retrouver la valeur renseigner par exemple pour radio de capa0). En plus je ne connais pas catia alors... ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
fabientoupeti Posté(e) le 30 mai 2007 Auteur Posté(e) le 30 mai 2007 je suis conscient que j'ai été un peu fouilli lors de mon premier poste c'est pour ça que je viens de préciser ce que je veux régler, mais d'après ce que tu me dit ce n'est pas encore assez clair... et je me suis permis de reposter un message parce que peut etre quelqu'un d'autre pourra me donner une piste. et à mon avis catia ou pas, vb ça reste du vb et peut etre que je me trompe mais le vb et en particulier l'utilisation des userforms et les commandes associés (textbox, .value, .name...) restent les mêmes d'un logiciel à un autre. voilivoilou merci d'avance pour vos réponses et les aides que vous pourrez m'apporter fabientoupeti
sechanbask Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 Salut je ne comprends pas ta methode pour récupérer la valeur des textbox car pour moi le plus simple c'est: 'là tu dois commencer ta boucle pour les différents textbox et le nombre de valeurs Dim valeur As Single valeur = TextBox1.Text Dim valeur As Single 'là tu dois finir ta boucle pour les différents textbox MsgBox valeur ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
fabientoupeti Posté(e) le 4 juin 2007 Auteur Posté(e) le 4 juin 2007 Bonjour en fait le probleme que j'avais (pour ce probleme j'ai trouvé une solution) et que j'ai pour d'autre broutille c'est que j'ai créé mes textbox en dynamique parce que je ne sais pqs à priori le nombre que je vais devoir utiliser à l'execution du programme. et tout mon probleme venait de là.voici les solutions que l'on a pu me proposer sur des autres forums et qui fonctionnent. dans le module de mon programme general j'ai ecrit ce bout de code: For Each rad In definicion_mano.Controls If rad.Name = "textrad0" Then 'MsgBox rad.Name MsgBox "la valeur de " & rad.Name & " est : " & rad.Value ra0 = rad.Value End If Next rad MsgBox ra0 cela me permet de recuperer la valeur de textrad0.ce petit bout de code peut etre tres facilement adapté pour recuperer la totalité des textrad*. voilivoilou merci beaucoup sechanbask pour tes aides precieuses
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant