![]() |
|
Forum
|
|
|||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour à toutes et à tous,
Après une petite question sur les formules matricielles (merci Monique), une autre sur les formats personnalisés (merci Vériland), je termine cette semaine par une question/confirmation sur les UserForms (merci Thierry ? ;o)) Après avoir parcouru l'aide d'XL, l'historique de XLD, décortiqué les nombreuses démos de @+thierry sur les UserForms, je suis arrivé à réaliser mon envie et résoudre le problème auquel j'étais confronté (alors pourquoi venir embêter les forumistes, me direz-vous !...); juste pour obtenir une confirmation. Bref, je désirais atteindre une cellule (juste me positionner dessus) en fonction de la valeur sélectionnée dans une cmbBox d'un UserForm. Pour ce faire : Private Sub UserForm_Initialize() 'Alimentaion de la cmbBox Dim x As Byte For x = 2 To 13 cmbBudget.AddItem Sheets("Ca budgétés").Cells(1, x) Next x End Sub Private Sub cmbBudget_Change() 'Positionnement sur la cellule Sheets("Ca budgétés").Range("A1:M1").Select Dim cell As Range For Each cell In Selection.Cells If cell = cmbBudget.Value Then cell.Select End If Next Unload Me End Sub Ma question : n'y-a-t-il pas une procédure beaucoup plus simple ? Comme dans Access, la colonne liée ne peut-elle servir à déterminer le Range ? Du style : Cell.Select = cmbBox.ControleSource Merci pour tous les éclaircissements que vous pouvez (m')apporter, et excellent week-end à toutti. Janko |
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Janko et toi le forum,
ah ben plus simple je ne sais pas mais on pourrait envisager la chose suivante... Bon déjà pour l'initialisation de l'userform on peut laisser le code comme il est, puisqu'il va chercher les valeurs d'une plage pour l'intégrer dans le comboBox nommé cmbBudget... Private Sub UserForm_Initialize() 'Alimentaion de la cmbBox Dim x As Byte For x = 2 To 13 cmbBudget.AddItem Sheets("Ca budgétés").Cells(1, x) Next x End Sub c'est pas ça la question...lol en fait pour la boucle on pourrait définir la recherche de cette manière... Private Sub cmbBudget_Change() Dim Valeur As String, cell As Variant Valeur = cmbBudget.Value For Each cell In ActiveSheet.Range("Zone") If cell.Text = Valeur Then cell.Select Next cell Unload Me End Sub Le principe est simple...on définit valeur (ici cmbBudget.Value) ensuite on fait une boucle sur la plage zone de la feuille active...(zone étant une plage nommée sur la feuille par : Insertion/Nom/Définir) Ensuite la première valeur de la ComboBox trouvée dans la plage "zone" selectionne la cellule en question et ferme l'userform... Voilà ce qui pourrait être plus simple (entre guillemets)...enfin c'est à peu d'chose prêt la même chose qui se passe avec ta procédure... Par contre je ne sais pas si j'ai bien intégré ta question du Cell.Select = cmbBox.ControleSource...car pour moi cette condition sous entends que la cellule sélectionnée doit prendre la valeur du ComboBox (quelque part...lol)...ce qui n'a plus rien à voir avec une recherche... Enfin j'sais pas là...lol Bonne programmation ![]() |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|