Erreur d'exécution 424 "Objet Requis"

Résolu/Fermé
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014 - Modifié par jordane45 le 25/11/2014 à 11:40
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014 - 25 nov. 2014 à 14:14
Bonjour,

Je reviens vers vous avec un petit souci. J'ai un tableau contenant deux colonnes. J'ai un Userform avec une ComboBox et une TextBox

L'idée est qu'il s'affiche dans la TextBox le contenu de la seconde colonne quand le contenu de la ComboBox est choisi dans la liste correspondant à la première colonne.

Voici mon code :
'Pour le formulaire
Private Sub UserForm_Initialize()
'Feuil3.Unprotect "wsdeadx8"
Dim J As Long
    Dim I As Integer

    Set Ws = Sheets("JANVIER") 'Correspond au nom de votre onglet dans le fichier Excel
    With Me.ComboBox1
        For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
            .AddItem Ws.Range("A" & J)
        Next J
    End With
    For I = 1 To 1
        Me.Controls("TextBox" & I).Visible = True
    Next I
'Feuil3.Protect "wsdeadx8"
End Sub

'Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
Feuil3.Unprotect "wsdeadx8"
    Dim Ligne As Long
    Dim I As Integer

    If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 1
        Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
    Next I
Feuil3.Protect "wsdeadx8"
End Sub

Sur mon erreur de débogage, cette ligne est toujours mise en jaune, mais je ne comprend pas pourquoi :

Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)

Je précise que j'ai un autre Userform avec 7 TextBox (donc For I = 1 To 7) et un tableau plus grand que deux colonnes et que cette même ligne ne me pose pas de souci. Alors je comprend plus, si quelqu'un à la solution, je suis preneur.

Merci




EDIT : Ajout des balises de code

6 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
25 nov. 2014 à 11:42
Bonjour,

Tu utilises Ws .. mais tu ne l'a pas initialisé dans ta SUB ... d'où l'erreur.


PS: Faire une boucle for i=1 to 1 ... n'a pas d'interet...
Autant mettre directement I=1


0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
25 nov. 2014 à 11:49
Bonjour, concernant : For I = 1 To 1

Si je met seulement : For I = 1

Il me dit : Erreur de compilation: Attendu : To

Concernant Ws, je n'ai pas saisi ce que tu veux dire ?
0
Bonjour

Modificatiob de la combobox Change



Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = ComboBox1.ListIndex + 2
With Feuil3
.Unprotect "wsdeadx8"
TextBox1.Value = .Cells(Ligne, 2)
.Protect "wsdeadx8"
End With
End Sub

A+
Maurice
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
25 nov. 2014 à 12:03
Cela fonctionne parfaitement, merci Maurice et merci aussi Jordane45 pour votre aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re
Voila la combobox



Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
With Feuil3 'Correspond au CodeName de votre onglet dans le fichier Excel
ComboBox1.Clear
For J = 2 To .Range("A" & Rows.Count).End(xlUp).Row
.AddItem .Range("A" & J).Value
Next J
End With
TextBox1.Visible = True
End Sub

A+
Maurice
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
25 nov. 2014 à 14:14
Merci Maurice et Jordane45 j'ai trouvé pour ce que tu me disait concernant Ws. Merci encore à vous deux :)
0