Aller au contenu

besoin d\'aide pour creation textbox et label en dynamique


Messages recommandés

Posté(e)

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_mano

creer a la main 3 boutons commandes comme sur l'image

command1=creación

command2=OK

command3 =cancelar

 

2 textbox

textbox1 fera reference à cantidad

et textbox2 fera ref à distancia (non utilisé pour l'instant)

 

et 4 label au dessus de chaque colonne de textbox

radio

excen Y

excen Z

espesor

 

'--------------------------------------

 

'L'UserForm doit préalablement contenir un bouton nommé CommandButton1

Option Explicit

 

Private Sub CommandButton1_Click()

 

cantidad = Replace(definicion_mano.TextBox1.Value, ".", ",")

 

Dim capa As Control

Dim rad As Control

Dim excenY As Control

Dim excenZ As Control

Dim espe As Control

Dim 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 With

Next 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 With

Next 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 With

Next i

 

End Sub

 

Private Sub CommandButton2_Click()

creation2 = "oui"

definicion_mano.Hide

End Sub

Private Sub CommandButton3_Click()

creation2 = "non"

definicion_mano.Hide

End Sub

 

 

Dans un module avec n'importe quel nom

Sub CATMain()

definicion_mano.Show

If creation2 = "oui" Then

Else

MsgBox "comando cancelado por el usuario", vbOKOnly, "Error"

End If

End Sub

 

Dans un autre module avec n'importe quel nom

Option Explicit

Public creation2 As String

Public 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ón

un 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

 

Fabientoupeti

ps:les noms sont en espagnol parce que je suis en stage en espagne en ce moment, voilà vous savez tout.

 

 

Posté(e)

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 Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

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

Posté(e)

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 programme

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 '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 With

Next 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

Posté(e)

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 Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

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

Posté(e)

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 Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

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

 

 

 

 

 

 

 

 

 

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité