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

Résolu
sterog Messages postés 20 Statut Membre -  
sterog Messages postés 20 Statut Membre -
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
Configuration: Windows XP
Firefox 2.0.0.5

4 réponses

  1. manu59410 Messages postés 104 Statut Membre 24
     
    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
  2. sterog Messages postés 20 Statut Membre 3
     
    J'ai déjà essayé, ça ne marche pas non plus. Merci quand même;)
    0
  3. Utilisateur anonyme
     
    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
  4. sterog Messages postés 20 Statut Membre 3
     
    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