XL 2019 Format numérique sur plusieurs TextBox

pitufo2804

XLDnaute Junior
Bonjour,

Je suis en train de développer un formulaire sur un UserForm multipage contenant des CheckBox et des TextBox.

A l'activation de l'userform, je désactive toutes les coches existantes et cache toutes les textbox.

Je souhaite ensuite afficher une textbox en face de chaque checkbox cochée et verrouiller son contenu en format numérique.
Est-il possible de le faire sur tous les control en meme temps ou faut-il le faire sur chaque checkbox et textbox indépendamment ?

Je joins le fichier pour visualiser.

Merci de vos réponses.
 

Pièces jointes

  • Programmes.xlsm
    358.7 KB · Affichages: 11

patricktoulon

XLDnaute Barbatruc
bonsoir Hervé
tout a fait d'accord le tag est bien destiné a cela et comme on peut le modifier dans une procédure c'est parfait pour un stokage d'info dynamique propre au control
comme je le fait par exemple avec ma classe mouseover/out ou je stoke les propriétés control initiales
 

pitufo2804

XLDnaute Junior
Merci a tous pour ces infos !
Je vais essayer de mixer tout ça pour arriver à mes fins !

Par contre, pour ta méthode Patrick, l'inconvénient est que tous les textbox s'appellent pareil or les miens sont soit Elec, soit méca soit pneu etc... avec un if il y a moyen de le dupliquer par catégorie ?

VB:
For Each ctrl In Me.Controls
        If TypeName(ctrl) = "TextBox" Then
            X = X + 1: ReDim Preserve cls(1 To X)
            ctrl.Visible = False: Set cls(X).txtB = ctrl
            Set cls(X).check = Me.Controls(Replace(ctrl.Name, "TextBox", "CheckBox"))
        End If
Tu mets juste le if TypeName(ctrl) = "TextBox" Then ...
Je peux aussi alors remettre un if avec le elec, un avec le pneu, etc ?
 

ChTi160

XLDnaute Barbatruc
Re
regarde bien le code et les noms des controls.
n hesite pas si besoin d infos!
jean marie
Edit :
j'ai ajouter la gestion des TextBox (Patrick)
 

Pièces jointes

  • Programmes-Test DD-2.xlsm
    345.5 KB · Affichages: 4
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonsoir a tous
bon j'ai pris un des fichier je sais plus le quel
et désolé j'y suis allé a coup de tronçonneuse :oops:
j'ai donc virer le module classe
j'ai virer aussi un autre module ou il y avait recupcheck ou ou quelque chose comme ca
j'ai virer dans le code du userform tout ce qui avait rapport a ces modules supprimés
le principe
chaque textbox contient "T_" en plus dans le nom par raport a son checkbox
c'est pas compliqué un simple replace sur ctrl.name dans la boucle

le reste j'ai deja montré mais je le redonne

donc dans le userform allégé a coup de tronçonneuse :oops:

VB:
Public WithEvents TxtB As MSForms.TextBox
Public WithEvents check As MSForms.CheckBox
Dim cls() As New Select_PGM

Private Sub check_Change()
    TxtB.Visible = check.Value
End Sub

Private Sub txtb_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not Chr(KeyAscii) Like "[0-9-,]" Then KeyAscii = 0
End Sub

Sub UserForm_Activate()
    Dim index As Long, ctrl As Object, ok As Boolean
    With Me
        'classement jumelé
        For Each ctrl In Me.Controls
            nom = ctrl.Name
            ok = ctrl.Name Like "Pneu_T*" Or ctrl.Name Like "Elec_T*"
            If ok Then
                Debug.Print ctrl.Name & " jumelé à " & .Controls(Replace(ctrl.Name, "T_", "")).Name 'voir dans le debug
                ctrl.Visible = False
                Set ch = .Controls(Replace(ctrl.Name, "T_", ""))
                index = index + 1: ReDim Preserve cls(1 To index)
                Set cls(index).TxtB = ctrl
                Set cls(index).check = ch: ch.Value = False
            End If
        Next
    End With
End Sub
comme je disais " c'est pas compliqué";)
demo
demo2.gif


vous m'en voudrez pas ,il reste une ou deux variable a déclarer mais j'ai le bras fatigué avec la tronçonneuse ;)
j'ai fait ca entre deux olives (apéro oblige du vendredi fin de semaine)

pour la sub valider j'ai juste survolé mais la aussi on peu simplifier
 

Pièces jointes

  • Programmes-Test DD.xlsm
    247.8 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
re
bonsoir ChTi160
et alors?? ma méthode n'a pour limite que le max de controls possibles dans un userform
il te suffit d'ajouter dans la ligne ok les préfixes comme dans le cas présent "Elec_T" & Pneu_T et c'est tout ;)
cela n'a rien a voir même avec une méthode ou une autre ou même le nombre de page dans le multipage sauf indication contraire
je sais pas pour vous mais perso j'aime bien quand c'est simple et c'est pas parce que tu va avoir 100 pages avec 200 controls que ca ne l'est pas
;)
 

patricktoulon

XLDnaute Barbatruc
re
oui
c'est ce que l'on appelle une addition logique
ok = ctrl.Name Like "Pneu_T*" Or ctrl.Name Like "Elec_T*" or ctrl.name like"toto_T*" or ctrl.name like "ChTi160_T*" 'etc..etc...
ok=ceci ou cela ou cemachin ou ce truc ou ce bidule


l’opérateur "or" (ou) fait que si l'un est vrai alors ok est vrai
si j'avais utilisé And(et) si l'un est vrai et les autres non alors ok renvoie NULL sinon vrai ou faux

dans la boucle ChTi160_T_01 sera converti en ChTi160_01(textbox/checkbox)
;)
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour Patrick
Bonjour le Fil ,le Forum
Oh , là .......
Excuses !
Mais j'avais tout Compris !
j'éviterai à l'avenir d'intervenir sur tes Post , je vois que çà te fâche , tu fais comme tu as l'habitude , ce sont juste des Questions !
je n'avais pas l'intention d'imposer quoi que ce soit!
je le redis , je n'ai et je n' utilise jamais office personnellement .
juste pour essayer d'aider (les autres) donc il me faut apprendre de tous .
Amicalement
jean marie
 

patricktoulon

XLDnaute Barbatruc
bonjour ChTi160
a non pas du tout fâché au contraire
il se trouve que je généralise beaucoup dans le sens ou je fait des kits macro le plus universel possible que je réutilise a gogo
c'est ma façon de coder en vb(a,s),javascript (toujours privilégier le réutilisable)
un peu comme le boulanger qui garde un paton pour le levain de demain

parfois il m'arrive que quelque chose me soit passé sous le nez et nos échanges avec toi et d'autres font que je corrige
je me demandais si tu avais compris le principe c'est tout
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu