Calcul en mémoire useform de textbox

Bonjour,

Je ne désespère pas de mon fichier qui mettra beaucoup plus de temps que je ne pensais....

Nouvelle attaque, nouveau problème

le fichier comporte en page 3 du useform des textbox.

Les textbox de gauche TB_NBR(X) sont notés de 0 à 199 et se calculent automatiquement

Les textbox de droite Textbox(x) sont notés de 0 à 199 et sont renseignés manuellement

Je cherche à calculer en mémoire du Useform des valeurs des textbox de droite pour les remettre dans un tableau.

J'ai pensé a faire une boucle while end mais je dois me planter.

SI vous avez une idée je suis preneur.

Cordialement.


Il y a une erreur dans mon fichier de présentation

R0 = 1/(TB_Textbox0^2)

C'e n'st pas TB_Textbox0 mais Textbox0...

Salut Abricot,

je ne suis pas matheux mais,...

R0 = 1/(Textbox0^2)

... c'est une division par zéro, non?

A+

[*]if résultat impossible alors résulat = 0

le premier sera toujours de zéro

Abricot,

j'imagine que toutes les TextBox0,1,2,3,... sont vides au début du calcul, donc...

R0 = 1/(TB_Textbox0^2)

quelle que soit la TextBox, si elle est à zéro, ce sera une erreur!

Mais, bon, pas matheux, loin s'en faut!

Sauf explications de ton calcul sur plusieurs TextBox, je ne pourrai pas t'aider très efficacement!

A+

Bé le calcul ne se ferra qu'au moment du bouton "valider" donc je ne vois pas ou est l'erreur.... ?

la première ligne doit avoir un autre code :

Si TB_NBR0 <> "" alors Textbox0.value = 0

Pour les autres j'ai indiqué des valeurs rentrées manuellement pour faire un exemple de calcul :

Si TB_NBR1 <>"" alors R1 = 1/Textbox1.value^2

Si TB_NBR2 <>"" alors R2 = 1/Textbox2.value^2

Si TB_NBR3 <>"" alors R3 = 1/Textbox3.value^2

Si TB_NBR4 <>"" alors R4 = 1/Textbox4.value^2

Si TB_NBR5 <>"" alors R5 = 1/Textbox5.value^2

Si TB_NBR6 <>"" alors R6 = 1/Textbox6.value^2

Si TB_NBR7 <>"" alors R7 = 1/Textbox7.value^2

Si TB_NBR8 <>"" hop hop hop c'est vide tu t'arrêtes

je vais pas taper 200 fois la même ligne ? non ?

a+

Abricot,

OK, je crois que j'ai compris le truc! Le franc est tombé!

Je te fais ça!

A+

Salut Abricot,

voici un premier jet de ton fichier.

J'ai dû un peu chipoter avec ce que tu m'avais donné et il y a encore un Gremlin qui m'embête mais bon...

Il manque évidemment les 200 TextBox et je ne pense pas qu'il y a moyen avec VBA de charger cela dynamiquement comme en VB sinon, ce serait fait. Amuse-toi!

J'ai toujours un problème de compréhension de ton calcul mais je l'ai fait de façon aveugle.

Ici, tu dois d'abord compléter les valeurs de référence en 'Paramètres généraux' pour que la première volée de calcul se fasse.

Ensuite, en validant, ton calcul se fait et les résultats sont mis en tableau qui s'affiche sur la colonne A.

A tester!

A+

Bonjour curulis

Désolé pour le fichier, j'ai mis le mauvais sans les 200 textbox..... GRRR.

Sur le principe, l'idée est bien la bonne et je t'en remercie je suis en train d'apprendre la façon dont tu as fais ton code et ça me fait avancer de jours en jours ....

Juste deux questions (Et même à l'aveugle je pense que tu peux répondre):

Les valeurs collées dans le tableau en Range A:A sont toutes les mêmes quelques soit les données. Sais tu ou se trouve le bug ?

Au final je vais avoir 4 rangées de tableau (200 colonnes à chaque fois oui je sais monsieur Galopin01 va m’assassiner mais bon La France est plus grande que mes erreurs de débutant excel). + deux rangées "fictives" de calcul qui vont se mettre dans le useform.

Pour ranger les donneés sens horizontal de (A vers AB par exemple ....) du TYPE TB-nbr0, Textbox0, TB_kv0, TB_KVT0,TB_PRECIS0,TTB_HP0 puis TYPE TB-nbr1, Textbox1, TB_kv1, TB_KVT1,TB_PRECIS1,TTB_HP1 ........ etc etc il y a un code possible je suppose ?

A+ Curulis57 ps je mettrais un nouveau fichier quand j'aurais finis de nettoyer mon fichier avec les bon noms de textbox.


PS qu'est ce que ça va être quand il va falloir coder cette formule (je ne rentre pas dans la polémique des pyramides )

capture
curulis57 a écrit :

Il manque évidemment les 200 TextBox et je ne pense pas qu'il y a moyen avec VBA de charger cela dynamiquement comme en VB

Sissi... Mais ce qui ne passerait surement pas c'est les développements ultérieurs !

A+

Bonsoir Monsieur Galopin01, j'espère que vous allez bien.

Bé A défaut de générer des textbox automatiquement je me suis inspiré de ce code pour les renommer c'est déjà pas mal :

Y a -t il un intérêt fort à générer des textbox automatiquement ?

Sub RenommeTextBox()
Dim tablo, c As Control, n, i
tablo = Array("aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii", "jj", "kk")
For Each c In ThisWorkbook.VBProject.VBComponents("Userform1").Designer.Controls
  If c.Name Like "TextBox*" Then
    n = Val(Mid(c.Name, 8, 4)) - 1 
    i = Int(n / 100)
    c.Name = tablo(i) & n - 100 * i + 1
  End If
Next
End Sub
abricot a écrit :

Y a -t il un intérêt fort à générer des textbox automatiquement ?

Bonjour,

Dans le cas présent : Aucun ! D'ailleurs dans ce cas on ne les génère qu'au moment de l'affichage : Pas "en dur."

Ça ne présente un intérêt que si ton UserForm peut(/doit) être redimensionné dans toutes ses propriétés (en fonction de l'écran).

ou(/et) si le plus souvent, quelques contrôles suffisent et que leur nombre doit pouvoir changer en cours de partie... (en fonction d'une variable qui oblige à les redimensionner fréquemment ainsi que le UserForm)

C'est très théorique et absolument inutile dans le cadre de ce forum, mais c'était juste pour répondre à l'assertion de Curulis...

A+

Bonjour,

@Galopin, oui, je sais que la création dynamique est possible en VBA mais entraîne l'obligation de passer par des modules de classes, choses que je ne maîtrise pas encore.

En VB, je pouvais créer UNE TextBox et ensuite, via LOAD, en dupliquer autant que nécessaire et les utiliser de façon classique sans module de classe.

Belle journée à tous!

A+

C'est précisément ce qui manque à notre ami... Au lieu d'être obligé de dupliquer 200 évènements click le module de classe gère l'iD du contrôle. Et si en plus tu doit gérer un autre évènement pour les même contrôles...

C'est toute la différence entre 20 lignes de code et 5000...

VBA n'est pas très souple et on trouve rapidement ses limites en nombre de lignes de code.

Il reste que 200 TextBox ça me parait quand même très déraisonnable !

A+

Justement, avec VB, les Contrôles avaient chacun leur INDEX, propriété inexistante en VBA, ce qui permettait de programmer avec la même procédure toute une quantité de contrôles identiques!

Totalement incompréhensible, à mon sens, d'avoir supprimé cette propriété dans VBA!!

Enfin, on fait avec...

je continue dans ce sens. je verrais bien ou ça me mène. je voulais utiliser un spreadsheet à la place des textbox mais je n'ai trouvé personne pour m'aider sur le module OCW11 donc du coup je me suis rangé du côté des textbox.

Je repost mes questions par rapport à la solution du curulis.

Les valeurs collées dans le tableau en Range A:A sont toutes les mêmes quelques soit les données. Sais tu ou se trouve le bug ?

Pour ranger les donneés sens horizontal de (A vers AB par exemple ....) du TYPE TB-nbr0, Textbox0, TB_kv0, TB_KVT0,TB_PRECIS0,TTB_HP0 puis TYPE TB-nbr1, Textbox1, TB_kv1, TB_KVT1,TB_PRECIS1,TTB_HP1 ........ etc etc il y a un code possible je suppose ?

A+

Salut Abricot,

waouw, tu es passé à 0,6%, je vois!

Pour le 1er bug, je ne pige pas trop : un commande directe par MsgBox me donne le bon résultat!

Pour ta deuxième demande, si je la comprends bien, pas de souci : WorksheetFunction.Transpose(tTab) devrait faire l'affaire!

Mais tes TextBox, quelle affaire!

J'essaie de retrouver comment j'avais réussi à utiliser une FlexGrid... Trouve plus...

A+

Bonjour,

je continue dans ce sens. je verrais bien ou ça me mène. je voulais utiliser un spreadsheet à la place des textbox mais je n'ai trouvé personne pour m'aider sur le module OCW11 donc du coup je me suis rangé du côté des textbox.

Comme c'est un tableur, il fonctionne à peut près comme Excel. Il n'a pas toutes les fonctionnalités d'Excel mais il y a déjà de quoi faire donc, à quelques choses près, ce que tu programme pour une feuille Excel, tu peux le programmer pour une feuille du SpreadSheet.

3spreadsheet.xlsm (17.93 Ko)

Arf These ca fait 3 semaines que je suis dessus tous les soirs entre 8h et 2h du matin. je susi a deux doigts que le formulaire fonctionne.

je vais regarder pour le prochain fichier de construction "la bible des pompes" voir s'y j'y arrive ce qui impliquera peut être de recoder l'ensemble du fichier.

Rechercher des sujets similaires à "calcul memoire useform textbox"