Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour
,J'ai un userform et je souhaite remplir le COMBOBOX1 et le COMBOBOX 2 et le résultat s'affiche dans le textbox1 en cherchant les infos dans d'une feuille ci-joint PJ
Bonjour
,J'ai un userform et je souhaite remplir le COMBOBOX1 et le COMBOBOX 2 et le résultat s'affiche dans le textbox1 en cherchant les infos dans d'une feuille ci-joint PJ en plus je n'arrive pas a remplir le combobox 1
Merci pour votre aide.
Option Explicit
Private Sub UserForm_Initialize()
ComboBox1.RowSource = ""
ComboBox1.List = WorksheetFunction.Transpose([REF])
End Sub
Private Sub ComboBox1_Change()
AfficheRésu
End Sub
Private Sub ComboBox2_Change()
AfficheRésu
End Sub
Private Sub AfficheRésu()
If ComboBox1.MatchFound And ComboBox2.MatchFound Then
TextBox1.Text = Format([PRIX].Item(ComboBox2.ListIndex + 1, ComboBox1.ListIndex + 1).Value, "0.00 €")
Else
Me.TextBox1.Text = ""
End If
End Sub
Chez moi les listes des 2 ComboBox sont renseignées.
Renommez les de façon claire CBxRef et CBxCode. Ne leur mettez pas de propriété RowSource mais garnissez leur List avec les valeurs de plages nommées. Pour celle disposée horizontalement utilisez WorksheetFunction.Transpose, sinon il ne considère que sa seule 1ère ligne.
En ayant fait tout ça dans votre classeur par chance resté ouvert, le code modifié ainsi marche toujours :
VB:
Option Explicit
Private Sub UserForm_Initialize()
CBxCode.List = [CODE].Value
CBxRef.List = WorksheetFunction.Transpose([REF])
End Sub
Private Sub CBxRef_Change()
AfficheRésu
End Sub
Private Sub CBxCode_Change()
AfficheRésu
End Sub
Private Sub AfficheRésu()
If CBxRef.MatchFound And CBxCode.MatchFound Then
TextBox1.Text = Format([PRIX].Item(CBxCode.ListIndex + 1, CBxRef.ListIndex + 1).Value, "0.00 €")
Else
Me.TextBox1.Text = ""
End If
End Sub
Option Explicit
Private RngPrix As Range
Private Sub UserForm_Initialize()
Set RngPrix = [prix_]
ComboBox1.RowSource = ""
ComboBox2.RowSource = ""
ComboBox1.List = WorksheetFunction.Transpose(RngPrix.Rows(0))
ComboBox2.List = RngPrix.Columns(0).Value
End Sub
Private Sub ComboBox1_Change()
AfficheRésu
End Sub
Private Sub ComboBox2_Change()
AfficheRésu
End Sub
Private Sub AfficheRésu()
If ComboBox1.MatchFound And ComboBox2.MatchFound Then
TextBox1.Text = Format(RngPrix.Item(ComboBox2.ListIndex + 1, ComboBox1.ListIndex + 1).Value, "0.00 €")
Else
Me.TextBox1.Text = ""
End If
End Sub
Personnellement je n'utilise jamais la propriété RowSource des ComboBox.
Bonjour DRANREB,
Encore moi je ne comprends pas c'est mon niveau debutant qui persiste, pourriez vous me résoudre ce PB car je teste ça fonctionne sur certain ligne par pour l'ensemble. exemple pour le poids de 5 Kg il ne fonctionne pas ????
Merci beaucoup.
Quel UserForm il faut regarder ?
Pour le Mode_chrono-international il y a un nom "DBD_prix_euro" dont la référence est =#REF!#REF!. Il n'est pas le seul: il y aurait un sacré ménage à faire dans le gestionnaire de noms !
Et dans l'autre vous avez interverti les rôles respectifs de la 1ère ligne et de la 1ère colonne. Bon, ce sera ma dernière intervention, si vous ne suivez pas mes recommandations. Au lieu de les appeler ComboBox7 et ComboBox8 appelez les CBxPoids et CBxType bon sang !
Moi je change toujour partout la 1ère propriété (Name) de tous les objets VBA, et du coup je fais rârement ce genre d'erreur.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD