• Initiateur de la discussion Initiateur de la discussion jAQUOT
  • Date de début Date de début

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 !

J

jAQUOT

Guest
Bonjour
Je recherche la façon d'empecher l'utilisateur d'un combobox à ne saisir que le contenu de la rowsource.J'ai chercher dans les propriétés mais sans succes.
Merci
 
Re : Rowsouce

Bonjour JAQUOT,

Tu dois mettre la propriété "MatchRequired" à "True".

Cela ne t'empêchera pas d'écrire autre chose, mais tu auras l'apparition d'un message qui empêchera de quitter le contrôle.

Bon dimanche.

Cordialement.

Edit : bonjour Jean-Marcel
 
Dernière édition:
Re : Rowsouce

Bonjour le fil 🙂,
Juste pour signaler que la propriété RowSource est généralement déconseillée et qu'il vaut mieux lui préférer la méthode AddItem 🙄...
Bon dimanche 😎

Bonjour JNP,

Je ne partage pas entièrement ton avis. Peux-tu, s'il te plaît, développer davantage ta position sur ce sujet ?

Moi, je considère que RowSource est plus facile à manier et plus rapide qu'une boucle avec AddItem.

Mais je n'affirme rien !

Cordialement.
 
Re : Rowsouce

Re 🙂,
Je ne partage pas entièrement ton avis. Peux-tu, s'il te plaît, développer davantage ta position sur ce sujet ?
Pour développer un peu, déjà, il faut envisager 2 cas :
Le RowSource en dur dans l'USF : à la moindre suppression de ligne ou de colonne dans la feuille, bonjour l'angoisse, et j'ai malheureusement vu pas mal de cas sur le forum 😱...
Le RowSource dans le code : pourquoi pas, et effectivement, ça peut être plus simple à gérer, mais les mêmes risques de modification de la feuille s'appliquent 🙄.
Alors qu'avec AddItem, le Combo est chargé, quoi qu'il arrive sur la feuille (enfin jusqu'à un certain point) 😉...
Voilà mes raisons, mais j'avoue que ma réaction était plutôt par rapport au codage en dur dans l'USF, et que, comme toi, je n'affirme rien, j'ai mis "généralement" 😀...
Bon dimanche 😎
 
Re : Rowsouce

Bonjour à tous,

Perso, j'utilise "list" voir "additem", et vraiment rarement "rowsource", uniquement quand j'ai besoin d'utiliser des en-têtes... Effectivement moins maniable lorsqu'il faut agir sur la liste en supprimant des données...

bon après midi
@+
 
Re : Rowsouce

Bonjour le fil, bonjour le forum,

Justement un fil ici où la propriété RowSource a carrément planté le code ! Une alimentation dynamique par las méthode List (moi c'est un ours peu bavard qui s'est tué à me faire admettre cette méthode... Je l'en remercie encore aujourd'hui l'animal) a résolu le plantage. Comme la plupart dans ce fil je n'utilise plus cette RowSource peut fiable.
 
Re : Rowsouce

Bonsoir à tous,

Devant une telle unanimité, je m'efface en toute humilité.

Mais pour préciser mes propos, je ne rejette pas l'utilité d'utiliser des boucles avec AddItem, et je le fais lorsque je veux utiliser des listes contenant des discontinuités (ce qui est tout de même très rare dans mon cas). Sur un plan plus global, je dispose mes données en colonnes et j'affecte un nom à chaque colonne. Pour charger mes Combobox, je fais référence à ces plages en éliminant les cellules vides de la façon suivante :

Code:
ComboBox1.RowSource = Range("Liste").SpecialCells(xlCellTypeConstants).Address

Le nom "Liste" étant affectée à une colonne entière.

De cette façon, il est facile de mettre à jour la ComboBox si la colonne est modifiée, mais la liste ne doit pas comporter de blancs. C'est une condition facile à respecter en opérant un tri sur la colonne, avec l'avantage d'avoir une liste déroulante également triée.

Et je n'ai jamais eu de plantage avec cette méthode.

Voilà pour la petite histoire.

Bonne soirée à tous.
 
Re : Rowsouce

Justement un fil ici où la propriété RowSource a carrément planté le code ! Une alimentation dynamique par las méthode List (moi c'est un ours peu bavard qui s'est tué à me faire admettre cette méthode... Je l'en remercie encore aujourd'hui l'animal) a résolu le plantage. Comme la plupart dans ce fil je n'utilise plus cette RowSource peut fiable.

Bonsoir Robert,

Après avoir lu ton lien, et pour vérifier mes doutes, j'ai créé un petit fichier pour vérifier tes dires :

Un ComboBox défini avec une adresse dans sa propriété RowSource peut être modifié par code, sans créer de conflit. C'est le code qui l'emporte sur la propriété.

Dans le fichier joint, le RowSource est renseigné sur la colonne C (C1:C3) et son événement Activate le définit sur la colonne A (nommée "Liste"). Si on met l'événement Activate en commentaires, on charge la colonne C, si on le rétablit, on charge la colonne A.

Ceci fonctionne dans un cas simple, peut-être que sur une application plus complexe il en est autrement mais, comme je le disais précédemment, je n'ai pas encore rencontré de cas litigieux.

Bien cordialement.
 

Pièces jointes

Re : Rowsouce

Bonsoir le fil, bonsoir le forum,

Papou-net, je ne dit pas que la méthode ne marche pas, mais je dis simplement qu'elle me parait peu fiable. Si tu vas dans le fil que je propose de Zentin, tu verras un truc complètement fou.
Elle alimente un combobox multicolonne avec la propriété RowSource. Ensuite, elle renseigne différents textboxes avec les valeurs d'une ligne sélectionnée avec l'événement Change de cette comboBox tout simplement avec :
Code:
Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Me.TextBox1 = Me.ComboBox1.Column(1)
Me.TextBox2 = Me.ComboBox1.Column(2)
Me.TextBox3 = Me.ComboBox1.Column(3)
Me.TextBox4 = Me.ComboBox1.Column(4)
Me.TextBox5 = Me.ComboBox1.Column(5)
Me.TextBox6 = Me.ComboBox1.Column(6)
Me.TextBox7 = Me.ComboBox1.Column(7)
Me.TextBox8 = Me.ComboBox1.Column(8)
Me.TextBox9 = Me.ComboBox1.Column(0)
End Sub
L'utilisateur peut alors modifier le contenu d'une ou plusieurs textboxes et il y a un bouton qui permet valider ces modifications :
Code:
Private Sub CommandButton3_Click()
Dim li As Integer 'déclare la variable li (LIgne)
Windows("Clients_forum.xls").Activate
li = Sheets("clients").Columns(1).Find(TextBox9.Value, , xlValues, xlWhole).Row
Cells(li, 2).Value = Me.TextBox1.Value
Cells(li, 3).Value = Me.TextBox2.Value
Cells(li, 4).Value = Me.TextBox3.Value
Cells(li, 5).Value = Me.TextBox4.Value
Cells(li, 6).Value = Me.TextBox5.Value
Cells(li, 7).Value = Me.TextBox6.Value
Cells(li, 8).Value = Me.TextBox7.Value
Cells(li, 9).Value = Me.TextBox8.Value
Windows("Offres_forum.xls").Activate
End Sub
et c'est la le truc complètement fou, losque le code lit la première ligne :
Code:
Cells(li, 2).Value = Me.TextBox1.Value
il refait deux fois le ComboBox1_Change !!! Pourquoi ? Mystère et boules d'opium...
Évidemment ce ComboBox1_Change annule les changements effectuée par l'utilisateur et seul un changement effectué dans la TextBox1 était pris en compte... Voilà ! Perso j'ai pas d'explications si ce n'est la propriété BoundColumn qui agit differemment quand une combobbox est alimenté avec la propriété RowSource.
Dès qu'on a supprimé le RowSource, tout est rentré dans l'ordre. Mais j'avoue que j'ai bien galéré avant de trouver où était la cause.
Donc pour finir, je dis que je recommande pas cette méthode peu fiable... Même si dans ton exemple elle fonctionne...
 
Re : Rowsouce

Bonjour à tous

Eh bien moi, je n'en sais rien 😕, je ne me suis jamais posé la question, mais il faudra que je regarde comment je fais.

Je sais de tête que j'utilise plus volontier additem (premier de la liste 😉) ou rowsource il me semble car cela me parle plus que list mais il faudra que je regarde cela de plus près.

Après il faut peut être voir lequel est le lus rapide 😱.

Il est vrai qu'on ne peut pas tout savoir 😉.


A suivre....
 
Re : Rowsouce

Re 🙂,
Devant une telle unanimité, je m'efface en toute humilité.
Franchement, je ne pensais pas soulever toute une polémique en faisant une remarque en passant, et surtout, tu n'as pas à t'effacer, à chacun ses méthodes 😀.
Juste pour voir, j'essayerai dans mes prochains USF de tester les 2 méthodes, et je reviendrai faire mes commentaires 🙂.
Au passage, Jacquot a trouvé sa réponse, et c'est ça qui compte 😛.
Très bonne soirée à toutes et à tous 😎
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
171
Réponses
4
Affichages
344
Réponses
4
Affichages
321
Retour