XL 2019 soucis avec un formulaire dynamique

jclaborde

XLDnaute Nouveau
Bonjour à tous
J'ai quelques soucis avec un formulaire dynamique où je galère depuis 3 jours sans résultat
les voici par ordre de priorité:
1 impossible d'attribuer un code sur clic aux textebox
2 l'assenceur vertical pour défiler vers le bas le formulaire est inopérant
probablement idem avec l'horizontal

Merci à vous de regarder le fichier TEST_FORMULAIRE.xlsm joint
bon réveillon
jc
 

Pièces jointes

  • TEST_FORMULAIRE.xlsm
    51.7 KB · Affichages: 8

ChTi160

XLDnaute Barbatruc
Re
il faut que tu ailles dans les Propriétés du userform et tu y verras les propriétés qui concernent les ScroollBars
j'ai mis ScrollHeight à 1000 et vois ce que ca donne
Jean marie
 

Pièces jointes

  • ScrollPropriétés2.gif
    ScrollPropriétés2.gif
    510 KB · Affichages: 16
  • ScroolPropriétés.gif
    ScroolPropriétés.gif
    32.2 KB · Affichages: 14

jclaborde

XLDnaute Nouveau
Re
pour ce qui est de

Pourrais tu expliquer ce que tu veux faire (il faudra peut être passer par un Module de Classe)
Jean marie
Voilà
C'est vrai je l'ai laissé dans le code du form avec un goto pour le passer vu que cette partie ne fonctionne pas.
En haut du formulaire à droite du bouton Fermer il y a un controle nommé TextBox_LIBEL
La 3eme ligne des 30 textbox générés contient les libéllés de la colonne.
je voudrais programmer la procedure _Click() de chaque texbox ( les 900) pour toujour afficher le libellé de la colonne en haut de formulaire
TextBox_LIBEL.value = TB3_11.value
TextBox_LIBEL.value = TB3_20.value
donc pour le moment par exemple ce code sur TB20_11

Private Sub TB20_11_ click() ou DblClick
TextBox_LIBEL.value = TB3_11.value
End Sub
cdt
jc
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour
Une approche perfectible (je n'ai encore rien Compris Lol)
edit : je viens juste de voir ça Lol
VB:
Private Sub TB20_11_ click() ou DblClick
TextBox_LIBEL.value = TB3_11.value
End Sub
quel rapport entre
Code:
TB20_11
   et
TB3_11
Jean marie
 

Pièces jointes

  • TEST_FORMULAIRE (Chti160).xlsm
    59.5 KB · Affichages: 2

jclaborde

XLDnaute Nouveau
Bonjour
Une approche perfectible (je n'ai encore rien Compris Lol)
edit : je viens juste de voir ça Lol
VB:
Private Sub TB20_11_ click() ou DblClick
TextBox_LIBEL.value = TB3_11.value
End Sub
quel rapport entre
Code:
TB20_11
   et
TB3_11
Jean marie
Bonjour,
Vu ton fichier merci
Dans les 900 TB créées (30 lignes de 30 TB ( ou 30 colonnes de 30 lignes))
Ceux de la ligne 3 contiennent les libéllés pour toute la colonne colonne ils se nomment TB3_1 à TB3_30
Ce que je voulais c'est que si on est sur un TB de la ligne 20 par exemple TB20_1 à TB20_30, le libellé de la colonne en ligne 3 s'affiche dans le TextBox_LIBEL situé en haut d'écran. Idem pour les TB de toutes les lignes
Exemple
si je suis su le 9 eme TB la ligne 8 nommé TB8_9 qui a pour valeur 12
ce qui doit etre affiché dans TextBox_LIBEL n'est pas la valeur 12 mais la valeur du TB de la ligne 3et meme colonne nommé TB3_12 et qui est "NOM DU JOUR".
Si je suis sur le 11 eme TB de la ligne 8 (TB8_11) c'est "JOUR+DATE(LETTRES)" la valeur de TB3_11 (même colonne ligne 3) qui doit etre affiché dans TextBox_LIBEL et pas 15
etc ..
J'espère que c'est plus clair pour les valeurs qui doivent etre affichée
 

jclaborde

XLDnaute Nouveau
Re
Une autre version
Question:
Que doit-il ce passer pour les Lignes de TextBox 1 et 2
Jean marie
------
Super Jean marie
entre temps J'avais modifier la sub DblClick de la classe comme suit
pour le même resultat mais en moin beau pour le code 😊

Public Sub TBx_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Temp = TBx.Name
NCol = InStr(1, Temp, "_")
If NCol > 2 Then
Col_Libel = "TB3_" & Mid(Temp, NCol + 1)
UserFormResultat.TextBox_LIBEL.Text = UserFormResultat(Col_Libel).Text 'UserFormResultat. TBx.Text
End If
End Sub
-----
Pour les Lignes de TextBox 1 et 2, je n'ai pas encore décidé quoi afficher, mais je me débrouillerai, ton exemple de classe est suffisamment parlant et je m'en inspirerai.
-----
Pour l'assenceur, problème réglé aussi , cela me permet de n'afficher dans un 1er temps que les 12 premières lignes avec Height et un bouton pour affichersoit les 30 lignes ou seulement les 12 premières.
C'est interessant car cela permet de masquer une partie du formulaire servant à des calculs par exemple.
-----
Au départ j'avais demandé comment insérer une procédure dans le module du formulaire car je voulais m'en servir ensuite pour ajouter des boutons avec un traitement sur les données affichées. Cela m'aurait été utile car je n'ai toujours pas trouvé comment faire.
Sinon le traitement par classe d'évenement que tu proposes est 1000 fois plus adapté aux TB. C'est superbe.
------
Il y avait un autre point que j'ai omis de mentionner qui était comment enregistrer ce formulaire complet avec les controles créés (sans les données bien sur).
------
Une petite information qui m'a surpris, c'est qu'au départ j'avais nommé les TB générés "TB +Num de ligne + Num de colonne" TB11 TB12 etc TB121 Or à ma surprise
le TB1 col 21 de la ligne 1 TB121 avait le même nom
que celui TB21 colonne 1 de la ligne 21 TB211. J'ai donc du rajouter le "_" séparant la ligne de la colonne, sinon les données ne se mettaient pas au bon endroit.
Je ne savais pas que le vba était capable de créér 2 controls avec le même nom , ce qui est impossible dans l'interface de création manuelle de formulaire.
-------
Pour le pb principal tout est résolu.
merci pour tout
reveillonnes bien
Jean Claude
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
je ne comprends pas
tu dis:
Je ne savais pas que le vba était capable de créér 2 controls avec le même nom , ce qui est impossible dans l'interface de création manuelle de formulaire.
Non il est impossible de créer deux controls qui ont le même Nom.
Regarde bien les Noms !
Ou alors explique moi ce qui te semble anormal Lol
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Quelques exemples
la Logique c'est :

Code:
"TB" & i= 1 à 30 & "_" & Format( j= 1 à 30, "000"))
exemples
VB:
 "TB" & 1 & "_" & Format(1, "000"))="TB_1_001"
 "TB" & 2 & "_" & Format(1, "000"))="TB_2_001"
"TB" & 20 & "_" & Format(30, "000"))="TB_20_030"
"TB" & 30 & "_" & Format(12, "000"))="TB_30_012"
Tu n'auras jamais deux Controls du Même Nom
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Pour Ceux-ci !
Au départ j'avais demandé comment insérer une procédure dans le module du formulaire car je voulais m'en servir ensuite pour ajouter des boutons avec un traitement sur les données affichées. Cela m'aurait été utile car je n'ai toujours pas trouvé comment faire.
Si tu veux m'expliquer (exemples, Fichier de l'attendu) ce que tu veux faire, peut être pourrais je t'aider Lol
Jean marie
 

Discussions similaires