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

  • Initiateur de la discussion Initiateur de la discussion Janko
  • 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

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

Retour