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.
A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut Polux31,

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

A+
0
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
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