Posez votre question Signaler

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

sterog 20Messages postés 7 juin 2007Date d'inscription - Dernière réponse le 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
Lire la suite 

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

4 réponses
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
J'ai déjà essayé, ça ne marche pas non plus. Merci quand même;)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « [VBA EXCEL] userform=véritable casse-tête » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?