Microsoft 365 Liste déroulante dans Useform

FCMLE44

XLDnaute Impliqué
Supporter XLD
Dans mon userform feuille courriers, lorsque je sélectionne le petit crayon en haut colonne H sur la première liste déroulante, j'ai un débogage

Voici le code en question

VB:
Private Sub ComboBox1_Change()
[B12] = ComboBox1
For k = 1 To 13
Controls("Textbox" & k) = ""
Next
End Sub

Le problème semble venir de cette ligne

Code:
Controls("Textbox" & k) = ""


Je ne vois pas pourquoi

Quelqu'un aurait il une idée ?

Les données de ma liste déroulante se trouve dans la feuille paramètre colonne A

Quelqu'un aurait il une idée ?
 

Pièces jointes

  • Maquette STC.xlsm
    369.1 KB · Affichages: 20
Solution
Bonjour,
1603884416234.png


Dans votre code, vous voulez vider les textboxs 1 à 13.
Votre Userform n'en contient que 9 et non nommés en séquentiel.
L'erreur est toute à fait normale ...

Je vous propose de remplacer la sub :
VB:
Private Sub ComboBox1_Change()
[B12] = ComboBox1

'For k = 1 To 13
'Controls("Textbox" & k) = ""
'Next

For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.TextBox _
    Then Ctrl = ""
Next
End Sub

Rhysand

XLDnaute Junior
Bonjour à tous


Que voulez-vous dire ici? le nom de la feuille est manquant

VB:
[B12] = ComboBox1

et vous devez déclarer toutes les variables, sinon votre code peut devenir un cauchemar

et vous avez écrit dans votre code que le "k" va de 1 à 13, mais les textbox (6,7,8,9,10) n'existent pas dans votre userform


exemple de modifications de la façon dont le code doit être écrit, j'ai supprimé ('[B12] = ComboBox1)

VB:
Private Sub ComboBox1_Change()

'[B12] = ComboBox1

Dim k As Integer
Dim ctrl As MSForms.TextBox

For k = 1 To 5
    Set ctrl = Me.Controls("TextBox" & k)
    ctrl = ""
Next k

If Not ctrl Is Nothing Then Set ctrl = Nothing

End Sub

J'espère aider
 

fanch55

XLDnaute Barbatruc
Bonjour,
1603884416234.png


Dans votre code, vous voulez vider les textboxs 1 à 13.
Votre Userform n'en contient que 9 et non nommés en séquentiel.
L'erreur est toute à fait normale ...

Je vous propose de remplacer la sub :
VB:
Private Sub ComboBox1_Change()
[B12] = ComboBox1

'For k = 1 To 13
'Controls("Textbox" & k) = ""
'Next

For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.TextBox _
    Then Ctrl = ""
Next
End Sub
 

FCMLE44

XLDnaute Impliqué
Supporter XLD
Bonjour,
Regarde la pièce jointe 1083063

Dans votre code, vous voulez vider les textboxs 1 à 13.
Votre Userform n'en contient que 9 et non nommés en séquentiel.
L'erreur est toute à fait normale ...

Je vous propose de remplacer la sub :
VB:
Private Sub ComboBox1_Change()
[B12] = ComboBox1

'For k = 1 To 13
'Controls("Textbox" & k) = ""
'Next

For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.TextBox _
    Then Ctrl = ""
Next
End Sub

Merci
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345