Nom checkbox et textbox variable

Signaler
Messages postés
6
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
15 octobre 2008
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour,

Je bloque sur la synthaxe !!!

J'ai des CheckBox1 -2 -3 -.... et des Textbox1-2-3-.... sur une Userform.

Name CheckBox 1 : HEB100
Name CheckBox 2 : HEB120
Name CheckBox 3 : HEB140

Name Textbox 1 : qteheb100
Name Textbox 2 : qteheb120
Name Textbox 3 : qteheb140
Name Textbox 4 : longheb100
Name Textbox 5 : longheb120
Name Textbox 6 : longheb140

A cahque click sur un CheckBox je modifi l'apprance de la CheckBox et des TextBox associé. J'usque la patience !!!
Private Sub HEB100_Click()<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>



If HEB100.Value = True Then
    HEB100.BackColor = RGB(51, 0, 255)
    HEB100.ForeColor = RGB(255, 255, 255)
    qteheb100.BackColor = RGB(255, 255, 255)
    qteheb100.Locked = False
    longheb100.BackColor = RGB(255, 255, 255)
    longheb100.Locked = False
End If





If HEB100.Value = False Then
    HEB100.BackColor = RGB(255, 255, 255)
    HEB100.ForeColor = RGB(0, 0, 0)
    qteheb100.BackColor = RGB(204, 204, 204)
    qteheb100.Value = " "
    qteheb100.Locked = True
    longheb100.BackColor = RGB(204, 204, 204)
    longheb100.Value = " "
    longheb100.Locked = True
End If

End Sub



Et bien sur c'est a répété pour chaque CheckBox. C'est la ou je suis fainéant.


Est-ce possible de remplacer les HEB100, qteheb100 et longheb100 par des variables.




EXEMPLE :



Private Sub HEB100_Click()





J=HEB100





K=qteheb100





M=longheb100





If J.Value = True Then
    J.BackColor = RGB(51, 0, 255)
    J.ForeColor = RGB(255, 255, 255)
    K.BackColor = RGB(255, 255, 255)
    K.Locked = False
    M.BackColor = RGB(255, 255, 255)
    M.Locked = False
End If





If J.Value = False Then
    J.BackColor = RGB(255, 255, 255)
    J.ForeColor = RGB(0, 0, 0)
    K.BackColor = RGB(204, 204, 204)
    K.Value = " "
    K.Locked = True
    M.BackColor = RGB(204, 204, 204)
    M.Value = " "
    M.Locked = True
End If

End Sub











Je pense que ça doit être possible mais comment l'écrire


Merci.

8 réponses

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

1) controls("titi") se réfère au contrôle nommé titi
2) et surtout (beaucoup plus adroit) :
VB6 présente l'énorme avantage de permettre l'utilisation de grouês de contrôles indexés ...
Tu devrais vite t'y intéresser, il me semble ...
Voilà ...
Messages postés
6
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
15 octobre 2008

Merci jmfmarques de répondre aussi vite.

Est ce que tu peut développer un peu plus STP.

@+
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Il n'y a rien à "développer", ami...


Tout a été dit...


Une question, maintenant : développes-tu bien sous VB6 (le présent  thème) ?
Car une autre discussion que tu as ouverte me fait douter... et VBA (just in case) ne gère pas les groupes de contrôles indexés, ce que sait faire VB6 !
D'où le grand intérêt de choisir en connaissance de cause et avec soin le thème dans lequel on ouvre une discussion........!!!
Messages postés
6
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
15 octobre 2008

Tu a raison d'avoir le doute je suis en VBA.

Désolé d'avoir posser ce post au mauvais endroi.

@+

A tu une réponce pour les 2 post que j'ai possé.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Je t'ai déjà répondu ici : ma solution 1, puisqu'étant sous VBA, tu n'as pas le choix....
Il me semble avoir également répondu à ton autre discussion ...
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
en complément

'Utilise une procédure prenant en paramètre les noms des controls
'puis utilises la solution 1 de JMFMARQUES (salut)
'ex:

Private Sub HEB100_Click()
   Call ProcessClick("HEB100", "qteheb100", "longheb100")
End Sub<hr />

Private Sub ProcessClick(NomChBox As String, NomTxt1 As String, NomTxt2 As String)
'le code que tu as proposé
'mais en te référant aux objets par Controls("NomControl")
End Sub<hr />, ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
6
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
15 octobre 2008

merci pour vos réponces.
Voila ce que ca donne :

                                                                                                                                                           
Private Sub ProcessClick(a As String, b As String, c As String)


If Controls(a).Value = True Then
    Controls(a).BackColor = RGB(51, 0, 255)
    Controls(a).ForeColor = RGB(255, 255, 255)
    Controls(b).BackColor = RGB(255, 255, 255)
    Controls(b).Locked = False
    Controls(c).BackColor = RGB(255, 255, 255)
    Controls(c).Locked = False
End If


If Controls(a).Value = False Then
    Controls(a).BackColor = RGB(255, 255, 255)
    Controls(a).ForeColor = RGB(0, 0, 0)
    Controls(b).BackColor = RGB(204, 204, 204)
    Controls(b).Value = " "
    Controls(b).Locked = True
    Controls(c).BackColor = RGB(204, 204, 204)
    Controls(c).Value = " "
    Controls(c).Locked = True
End If


End Sub
                                                                                                                                                                 
Private Sub HEB100_Click()


Call ProcessClick("HEB100", "qteheb100", "longheb100")


End Sub
                                                                                                                                                                

Private Sub HEB120_Click()


Call ProcessClick("HEB120", "qteheb120", "longheb120")


End Sub
                                                                                                                                                                
.........

Ca marche nikel
@+
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
si tu estimes que ton problème est résolu, penses à appuyer sur réponse acceptée sur le OU les posts qui t'ont aider à avancer.

PETITE simplification
Private Sub ProcessClick(a As String, b As String, c As String)
   If Controls(a).Value = True Then
       Controls(a).BackColor = RGB(51, 0, 255)
       Controls(a).ForeColor = RGB(255, 255, 255)
       Controls(b).BackColor = RGB(255, 255, 255)
   Else
       Controls(a).BackColor = RGB(255, 255, 255)
       Controls(a).ForeColor = RGB(0, 0, 0)
       Controls(b).BackColor = RGB(204, 204, 204)
       Controls(b).Value = " "
       Controls(c).Value = " "
   End If
   Controls(b).Locked = Not Controls(a).Value
   Controls(c).Locked = Controls(b).Locked
   Controls(c).BackColor = Controls(b).BackColor
End Sub<hr />, ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée