ComboBox hors boîte de dialogue
Bonjour,
Je cherche à créer une zone de liste déroulante qui soit intégrée à la feuille (comme quand on la crée depuis Excel directement), c'est-à-dire qu'elle n'apparaîtrait pas dans une boîte de dialogue.
J'ai des données rangées en 4 colonnes, et je souhaiterais que l'utilisateur puisse choisir le nom d'une de ces colonnes dans la liste déroulante pour pouvoir afficher le graphique correspondant. Pour l'instant j'ai le code qui affiche la liste dans une boîte de dialogue :
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 0 To 3
Me.ComboBox1.AddItem Cells(12, 7 + i).Value
Next i
End SubEt dans mon module :
Sub LANCER_USERFORM()
UserForm1.Show
End SubPouvez-vous m'aider ?
Merci d'avance !
Oui c'est exactement ce qu'il me faut ! Merci merci merci d'avoir pris le temps de faire ça !
J'aurais une dernière requête pour compléter mon cahier des charges. J'aimerais que lorsque l'utilisateur change de choix de colonne dans la liste déroulante (donc clique sur le choix colonne B après avoir cliqué sur le choix colonne A par exemple), le graphique en cours se supprime pour laisser place au nouveau graphique sélectionné.
J'ai supposé qu'on pouvait nommer chaque graphique créé pour pouvoir le sélectionner et le supprimer ensuite, mais je n'ai pas réussi. Auriez-vous une idée ?
Voici la version de gmb actualisée avec la création de graphique lorsqu'un choix de la liste est sélectionné.
Merci beaucoup pour ta réponse rapide !
Est-ce que je peux te demander quelques explications sur le code que tu as ajouté ?
1) Pourquoi faut-il appeler ComboBox1_DropButtonClick à l'activation de la feuille ?
2) Je ne reconnais pas ce que fait cette procédure :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub3) Si j'ai bien compris, les graphiques créés seront automatiquement nommés "Graphique 1", "Graphique 2", etc... si on ne change pas leur nom. Est-ce bien pour ça que pour supprimer le graphique actuel tu as fait :
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Parent.DeleteSupposons que j'aie à présent deux tableaux du même type qu'actuellement, et que l'on ait une liste déroulante par tableau. Si j'affiche un graphique pour le premier et un autre pour le deuxième, est-ce qu'on peut utiliser la même méthode pour que lorsque je change de graphique pour l'un des tableaux, le graphique de l'autre tableau ne soit pas supprimé en même temps ? (Je ne sais pas si j'ai été claire, ne pas hésiter à me demander sinon.)
4) Enfin j'ai une question un peu bête, comment as-tu fait pour créer la liste déroulante et lui affecter les méthodes ComboBox1_DropButtonClick etc, car je ne vois nulle part l'objet créé si ce n'est son affichage et interaction possible sur la feuille ?
Encore un grand merci d'avance !
Je dois s’abord te dire que je préfère travailler avec des UserForms . Mais comme tu voulais simplement une liste déroulante sur ta feuille de calcul, hors boite de dialogue, je te l’ai faite. Des goûts et des couleurs on ne discute pas.
comment as-tu fait pour créer la liste déroulante...
Cette liste déroulante est un contrôle « ActiveX » que l’on obtient en sélectionnant ‘’Développeur’’ dans le bandeau puis en cliquant sur ‘’Mode Création’’ et enfin sur l’icone ‘’Insérer’’ qui ouvre la fenêtre des différents contrôles qu’on peut choisir.
Quand on a dessiné le contrôle sur la feuille, un clic droit permet de lui attribuer une macro en sélectionnant ‘’Visualiser le code’’.
On ouvre ainsi la feuille VBA associée à ce contrôle et, grace à la liste déroulante située en haut et à droite de la feuille, on peut choisir, comme dans un userForm un type de macro aux propriétés particulières.
Pourquoi faut-il appeler ComboBox1_DropButtonClick à l'activation de la feuille ?
Celle que j’ai choisi à la propriété de se déclencher dès qu’on sélectionne le contrôle sur la feuille de calcul. Et c’est elle qui me met les items désirés : A, B, C, D grace à une boucle.
Je ne reconnais pas ce que fait cette procédure : ....
Cette macro est inutile et peut être effacée.
3) Si j'ai bien compris, les graphiques créés seront automatiquement nommés "Graphique 1", "Graphique 2", etc... si on ne change pas leur nom. Est-ce bien pour ça que pour supprimer le graphique actuel tu as fait :
Tu as très bien compris.
est-ce qu'on peut utiliser la même méthode pour que lorsque je change de graphique pour l'un des tableaux, le graphique de l'autre tableau ne soit pas supprimé en même temps ?
Ben oui. Les nouvelles macros devront être liées au nouveau ComboBox qui ne sera plus ComboBox1 mais ComboBox2.
Bye !
Merci beaucoup pour tes précieuses explications. J'essaie maintenant d'appliquer ce que l'on a vu à mon projet, mais je ne parviens pas à relier la macro Macro1 à la combobox. J'ai essayé en faisant Call Macro1 dans ComboBox1_Click, ou encore Call NomDuModule.Macro1, ou encore de l'appeler dans ComboBox1_Change.