Propriété Texbox_change sur texbox indéfini

Signaler
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008
-
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008
-
Bonjour,

Je suis en VBA (version EXCEL 2003) et j'ai pas trouvé le bon thème!

Dans une userform, je crée des textbox en dynamique. Je voudrais que chaque userform impair soit un cumul de la précédente texbox impair + la textbox pair précédente.

pour une je programmerais:

sub texbox3_change( )
textbox3=textbox1+textbox2
end sub

Super facile, pour une. Mais comme je cherche à le faire pour des textbox dont je ne connais pas le numéro, je ne sais pas. Peut-être par un module de classe? Ou alors en intégrant cet événement _change dans un module?

Merci d'avance.

12 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,

je te mets simplement sur des rails :
soient plusieurs controles nommés toto suivi d'un chiffre n
1) Controls("toto" & n) se réfère au contrôle toton
2)
 For each ctrl in controls 
      lenomducontrôle = ctrl.name
      if left(lenomducontrole, 4) = "toto" then 'c'est alors l'un de contreôles qui sont baptisés toton
         indicecontrole = val(mid(lenomducontrole,5)) ' te donnera le chiffre n du contrôle concerné
     end if
Next
3) pour savoir si n est pair ou impair :
 if n and 0 'est alors pair
 if n and 1 'est alors impair
4) si n est impair, pour connaitre les pairs précédents
   for i = n-1 to 2 step -2
      .....
  next
A toi de jouer, maintenant ...
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour,

Arrêt bourin !

Repense ton problème autrement... On ne crée pas des textbox dynamiquement pour faire un simple calcul ! ... On n'a pas idée de faire ça... Explique un peu ce que tu veux faire, je te tenterais de t'aiguiller des pistes de réflexion sur la façon de faire...

Amicalement,
Us.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Oupss... en même temps...
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008

Merci JMF et us_30 pour vos réponses, mais ce n'est pas exactement ce que je recherches.
@JMF:
Ce que je cherches à faire c'est au cas où on rentre une valeur dans un textbox, la valeur d'une autre texbox change.
Le hic c'est que les valeurs des textbox me sont pas connus.

La valeur MID ne nécessite pas une seconde valeur? val(mid(lenomducontrole,5,1))

@us_30:
Mon soucis est que je souhaite faire un "genre" de tableau croisée dynamique dans une userform? Pourquoi? Parcequ'un tableau croisée dynamique ne permet pas de modifier les valeurs!

Pour info (attention c'est de la lecture!) : Mon tableau devra comporter 2 années de 52 semaines chacune avec environ 500 lignes pour la version complète. Des filtres situées en haut de la userform permettront de sélectionner les lignes intéressantes. D'autres filtres permettront de faire le cumul par mois des semaines précédemment affichés.
10 lignes forment un modèle, plusieurs modèles(qté variable) forment un pays.
La première ligne servira à saisir des chiffres sur certaines semaines et la deuxième a en faire le cumul.
De plus une macro viendra répartir en fonction de la quantité total de chaque semaine les chiffres sur les semaines avoisinantes.
D'autres part, il y aura la possibilité aux utilisateurs de saisir sur d'autres tableaux à la journées ce coup ci des valeurs, qui iront se reporter directement dans le tableaux principal.
Je ne pense pas que cela pourrait être fait plus simplement que les textbox en dynamique ou alors se taper les 52*2*500 textbox à la main!!!
Surtout que je compte ajouter un système qui permettent d'ajouter ou supprimer un modèle par un clic.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
" tableau croisée dynamique ne permet pas de modifier les valeurs! "


Je ne lis pas plus loin, pour réagir tout de suite. Un tableau dynamique se met à jour ! Il suffit de le rafraîchir...
( pas tester, mais évident...)

Amicalement,
Us.
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008

Il se met à jour certes, mais pas sur le Tableau lui-même! Essaie de taper une valeur dans une cellule, tu verras ce qu'il te répondra!
PS : les utilisateurs ne mettront pas à jour la base de donnée, mais le Tableau, d'où mon problème!
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Garlim,

1) les indications que je t'ai données suffisent à traiter ce que tu veux traiter ! Réfléchis un peu
2)MsgBox Mid("toto25", 5) ===>> retourne bien évidemment 25 !
Bref ...
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008

1)Merci JMF, je test ça demain au boulot^^
2)Ah bin j'apprends quelquechose, je savais pas que si on mettais rien après il prenait toutes les lettres :D (moi j'aurai mis right("toto25",2))
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
"moi j'aurai mis right("toto25",2))"

Ah ! bravo ! et quid pour toto3 ? (un seul varactère pour l'indice et non deux comme avec toto25) , hein ???
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008

Mouarf, pas con du tout le bougre! Excellente astuce!!!
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008

Impeccable, ça marche JMF! Je voulais faire un sub textbox_change (), mais avec une addition, ça marchera quand même :D
Messages postés
10
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
30 juillet 2008

Ah oui, mais non en fait :s
J'aurai souhaité pouvoir entrer des valeurs donc dans les cases pair, et qu'à ce moment là la valeur indique le cumul dans les case impaire.