[VBA EXCEL] userform=véritable casse-tête

Résolu/Fermé
sterog Messages postés 20 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 10 novembre 2008 - 18 juil. 2007 à 16:23
sterog Messages postés 20 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 10 novembre 2008 - 19 juil. 2007 à 09:27
Bonjour,
dans le cadre d'un stage, je fais face à un problème que je n'arrive vraiment pas à résoudre.

J'ai une premiere userform dans lequel l'utilisateur rentre plusieurs chiffres correspondant aux nombres de chaque appareil dans une installation. Puis, en cliquant sur un bouton dans la userform, une deuxième userform se lance, et le but serait d'avoir un nombre de label par appareil égal au nombre indiqué dans la première userform.
Par exemple, si je choisis dans la userform qu'il y: nombre frigo=2 et nombre four=4, je voudrai que dans la 2e userform on est 4 label frigo et 2 label four.


Voici mon code associé au bouton de la première userform lançant la deuxième:
Private Sub CommandButton1_Click()
'création userform2 adaptée

Dim i As Integer
i = UserForm1.labelfrigo.Value
For n = 1 To i
UserForm2.labeln.Caption = "frigo"
Next n

Dim j As Integer
j = UserForm1.labelfour.Value
For n = 1 To i
UserForm2.labeln.Caption = "four"
Next n

UserForm2.Show
End Sub


Excel trouve une erreur aux lignes UserForm2.labeln.Caption = "frigo" et UserForm2.labeln.Caption = "four" car il essaie de trouver un label nommé labeln dans la userform 2, mais moi je voudrai qu'il comprenne que cela veut dire label1 puis label2 ...
J'ai essayé de contourner le problème en créant une variable temporaire du type var=lalel & n mais la ligne UserForm2.var.Caption = "four" ne lui va pas non plus.

Je ne sais pas si c'est un casse-tête ou si la solution est évidente et je ne l'ai pas vue, mais je vous défi de trouver la solution. ça me serait d'une grande aide!!!

Merci d'avance
A voir également:

4 réponses

manu59410 Messages postés 102 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 9 février 2018 24
18 juil. 2007 à 16:33
je vais peut etre dire une bétise.. attention je ne suis pas sur de ma réponse.
Essaye de mettre des parenthèses autour du compteur.
label(n)
0
sterog Messages postés 20 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 10 novembre 2008 3
18 juil. 2007 à 16:42
J'ai déjà essayé, ça ne marche pas non plus. Merci quand même;)
0
Utilisateur anonyme
18 juil. 2007 à 17:31
Bonjour,

Exemple :

Option Explicit
'

Public Function NomDuControle(varForme As UserForm, varControle As String) As Object
    On Error Resume Next
    Set NomDuControle = varForme.Controls(varControle)
End Function
'

Private Sub CommandButton1_Click()
    ' Création [UserForm2] adaptée

    Dim i As Integer, j As Integer, n As Long
    Dim Fonction As Variant
    
    UserForm2.Show
    UserForm2.Hide
    If (Me.TxtBoxFrigo.Value <> "") Then
        i = CInt(Me.TxtBoxFrigo.Value)
        If (i > 0) Then
            For n = 1 To i
                NomDuControle(UserForm2, "label" & n).Caption = "Frigo No: " & n
            Next n
        End If
    End If

    If (Me.TxtBoxFour.Value <> "") Then
        j = CInt(Me.TxtBoxFour.Value)
        If (j > 0) Then
            For n = 1 To j
                NomDuControle(UserForm2, "label" & n).Caption = "Four No: " & n
            Next n
        End If
    End If
    
    UserForm2.Show
    
End Sub
'


Issue d'un exemple d'excelabo.net (John Fauss)

Lupin
0
sterog Messages postés 20 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 10 novembre 2008 3
19 juil. 2007 à 09:27
On m'a donné la solution. Si ça peut aider certaines personnes, la solution est de remplacer
UserForm2.labeln.Caption = "frigo"
par
UserForm2.Controls("label" & n).Caption = "frigo"


Merci quand même à toi Lupin.
0