ChekBox [Résolu]

GermPeru 166 Messages postés mercredi 7 décembre 2016Date d'inscription 5 décembre 2017 Dernière intervention - 8 févr. 2017 à 18:44 - Dernière réponse : GermPeru 166 Messages postés mercredi 7 décembre 2016Date d'inscription 5 décembre 2017 Dernière intervention
- 9 févr. 2017 à 13:46
Bonjour a tous,

Au travers d'une chek box je souhaiterais rendre la propiete de certaines de mes txt box enabled = true.
Le detail est que mes textbox se créent automatiquement a l´initialisation de mon USF, je pense avoir un probleme avec le nom de ces derniere mais je ne vois pas lequel

Private Sub ChkMod_Click()

Dim Ctrl As Control
'On compte le nb de lignes
 Dim NbLignes As Long
 Sheets(2).Range("A1").Select
 NbLignes = Range("A1", Selection.End(xlDown)).Cells.Count

    
      For i = 2 To NbLignes
          For Each Ctrl In Me.Controls
            If TypeName(Ctrl) = "TxtN" & i Then
                Select Case ChkMod.Value
                Case True: "TxtN" & i.enabled = True
                Case False: "TxtN" & i.enabled = False
                End Select
            End If
          Next Ctrl
      Next

End Sub


Je pense qu'il y a plus simple et plsu precis...

Merci de votre aide
Afficher la suite 

8 réponses

Répondre au sujet
yg_be 4148 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 8 févr. 2017 à 19:41
0
Utile
3
bonsoir, tu n'expliques pas ce qui ne va pas: tu as un message d'erreur, cela ne se comporte pas quand tu espères, ...?
GermPeru 166 Messages postés mercredi 7 décembre 2016Date d'inscription 5 décembre 2017 Dernière intervention - 8 févr. 2017 à 19:42
Ca n´accepte pas la sintax suivante:

"TxtN" & i.enabled = True

J'ai essayé avec differentes formule sans resultat
yg_be 4148 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 8 févr. 2017 à 19:55
et ainsi?
Ctrl.enabled = True

autre chose: es-tu certain de
TypeName(Ctrl)

moi j'essaierais
Ctrl.Name
GermPeru 166 Messages postés mercredi 7 décembre 2016Date d'inscription 5 décembre 2017 Dernière intervention > yg_be 4148 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 8 févr. 2017 à 20:23
Merci c' est exactement ca pour tes 2 commentaires,je ne saisi pas exactement la différence entre type.name() ctrl.name mais ... cela fonctionne.


Je mets le code pour ceux que ca interesse:

Private Sub ChkMod_Click()

Dim Ctrl As Control
'On compte le nb de lignes
Dim i As Integer
Dim NbLignes As Long
 Sheets(2).Range("A1").Select
 NbLignes = Range("A1", Selection.End(xlDown)).Cells.Count


      For i = 2 To NbLignes
          For Each Ctrl In Me.Controls
            If Ctrl.Name = "TxtN" & i Then
                Select Case ChkMod.Value
                Case True: Ctrl.Enabled = True
                Case False: Ctrl.Enabled = False
                End Select
            End If
          Next Ctrl
      Next

End Sub



Encore merci, yg_be
Commenter la réponse de yg_be
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - Modifié par pijaku le 9/02/2017 à 08:24
0
Utile
3
Bonjour,

Quand je lis ceci :
Select Case ChkMod.Value
    Case True: Ctrl.Enabled = True
    Case False: Ctrl.Enabled = False
End Select

ça me défrise.
Déjà que je n'ai plus beaucoup de cheveux...

Tout simplement pourquoi pas comme ceci :
Ctrl.Enabled = ChkMod.Value


Soit :
For Each Ctrl In Me.Controls
   If Ctrl.Name = "TxtN" & i Then Ctrl.Enabled = ChkMod.Value
Next Ctrl


TypeName renvoie le nom du type de contrôle. Dans ton cas, "TextBox".
Name renvoie le nom définit dans la propriété Name du contrôle. Dans ton cas "TxtN1", "TxtN2", etc...
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
yg_be 4148 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 9 févr. 2017 à 09:30
bonjour, on peut probablement simplifier encore plus en supprimant i, NbLignes, et la boucle avec i: il suffit de tester que le nom commence par TxtN, et, eventuellement, continue avec un nombre. .
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention > yg_be 4148 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 9 févr. 2017 à 09:36
tout à fait.
Ou comme ceci selon le nom des textbox :
For Each Ctrl In Me.Controls
   If Ctrl.Name Like "TxtN*" Then Ctrl.Enabled = ChkMod.Value
Next Ctrl
GermPeru 166 Messages postés mercredi 7 décembre 2016Date d'inscription 5 décembre 2017 Dernière intervention - 9 févr. 2017 à 13:46
Je me passione a vous lire, merci pour vos pertinentes interventions! Je vais essayer de finir mes phases....
Commenter la réponse de pijaku