Atteindre une cellule cible d'après la valeur choisie d'une cmbBox d'un UserForm

J

Janko

Guest
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
 
V

Vériland

Guest
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

A+Veriland.gif
 

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22