Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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,


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,


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

Merci
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…