ChekBox

Résolu
GermPeru Messages postés 175 Statut Membre -  
GermPeru Messages postés 175 Statut Membre -
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

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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, ...?
    0
    1. GermPeru Messages postés 175 Statut Membre
       
      Ca n´accepte pas la sintax suivante:

      "TxtN" & i.enabled = True

      J'ai essayé avec differentes formule sans resultat
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      et ainsi?
      Ctrl.enabled = True

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

      moi j'essaierais
      Ctrl.Name
      0
      1. GermPeru Messages postés 175 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
        0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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. .
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
        0
    2. GermPeru Messages postés 175 Statut Membre
       
      Je me passione a vous lire, merci pour vos pertinentes interventions! Je vais essayer de finir mes phases....
      0