Activer nTextBox selon une valeur n d'une cellule excel.

eddygordofai -  
 eddygordofai -
Bonjour,

Je suis débutant en VBA et je bug complet là.
J'ai des Textbox que j'ai nommé SN1, SN2, SN3... jusqu'à SN12.
J'ai une valeur dans une cellule de mon tableau excel qui peut-être compris de 1 jusqu'à 12.
Mes Textbox SN1-SN12 sont en *.visible=false.

Je souhaiterais que:

Selon la valeur de ma cellule, les SN1-SN12 s'active.
Par exemple:
Si la valeur de ma cellule est égale à 4, les textbox SN1 à SN4 s'active, donc que je les pas en*.visible=true.

Donc que cellule=n --> les textbox de SN1 jusqu'à SNn passe en*.visible=true.

Y'a-t-il un moyen d'écrire ça s'il vous plaît ?

J'ai un début, mais je pense pas que ce soit bon:

Dim n As Integer

n = Sheets("Feuille de l'Administrateur").Cells(3, 7).Value

For n = 1 To n

Next
[("SN_"& n)].Visible = True

Merci pour votrre temps et vos idées.

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Dim n As Integer, i As Integer
    
    n = Sheets("Feuille de l'Administrateur").Cells(3, 7).Value
    If n > 12 Then 
        MsgBox "Nombre trop élevé"
        Exit Sub
    End If
    'TextBox Visible = True
    For i = 1 To n
        Me.Controls("SN_"& i).Visible = True
    Next
    'Les autres TextBox Visible = False
    If n = 12 Then Exit Sub ' au cas ou n = 12
    If n + 1 = 12 Then ' au cas ou n = 11
        Me.Controls("SN_"& n + 1).Visible = False
        Exit Sub
    End If
    For i = n + 1 To 12
        Me.Controls("SN_"& i).Visible = False
    Next i
    0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Une métode :

    Dim colText As New Collection
    Dim ctrl As Control
    Dim i As Long
    
        For Each ctrl In Me.Controls
            If TypeOf ctrl Is MSForms.TextBox Then
                colText.Add ctrl
            End If
        Next ctrl
        
        For i = 1 To CInt(Sheets("Feuille de l'Administrateur").Cells(3, 7).Value)
            colText(i).Visible = True
        Next i


    Arrrfff trop rapide Pikaju ^^

    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut Polux31,

      Ne pas oublier de masquer les autres textbox, en cas de manipulations multiples.
      Trop rapide ... cette fois-ci ;-)

      A+
      0
  3. eddygordofai
     
    euh je suis vraiment désolé les gars, mais j'ai rien compris.

    Dim colText As New Collection
    Dim ctrl As Control Dim
    i As Long For Each ctrl

    ça c'est bon.

    Mais ensuite j'écris quoi comme fonction pour que quand mon userform s'initialise.

    moi j'avais commencé à écrire:

    For n = 1 To n

    Next
    [("SN_"& n)].Visible = True

    Sachant que cette dernière ne fonctionne pas. ça me fait une erreur 424.
    au niveau de:
    [("SN_"&n)].visible=true

    je pense pas que c'est une fonction valable.

    Encore désolé les gars. mais comme je débute, c'est chaud de vous suivre rapidement.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Nos deux codes sont à placer dans un événement de ton UserForm. Si tu le veux à l'initialisation, tu utilises :
      Private Sub UserForm_Initialize()
      
      End Sub


      Soit, avec le code de Pollux (que tu sembles préférer au mien...) :
      Private Sub UserForm_Initialize()
      Dim colText As New Collection
      Dim ctrl As Control
      Dim i As Long
      
          For Each ctrl In Me.Controls
              If TypeOf ctrl Is MSForms.TextBox Then
                  colText.Add ctrl
              End If
          Next ctrl
          
          For i = 1 To CInt(Sheets("Feuille de l'Administrateur").Cells(3, 7).Value)
              colText(i).Visible = True
          Next i
      End Sub
      0
    2. Polux31 Messages postés 7219 Statut Membre 1 204
       
      On n'a pas forcément pris l'option "Sciences Divignatoires" dans notre cursus informatique !!!

      Avec aussi peu d'élément, il nous est impossible de savoir ce que tu comptes faire.

      Nous te donnons des pistes comme nous avons perçu ta demande et rien de plus.
      0
    3. eddygordofai
       
      Ok c'est fait.
      Par contre j'ai entré pour dans la cellule 5.
      J'ai qu'un textbox qui s'affice alors que je suis en censé en avoir 5 d'affiché.

      Mais en tout cas ça ne plante plus.
      Manque plus qu'à trouver pour quoi la valeur de "n" n'est pas pris encompte pour la rendre 5 textbox visivle dans mon test.
      0