Insertion d'une listbox

N

nico

Guest
Boujour à tous,

Je me prends la tête la-dessus depuis plusieurs jours:

A partir d'une macro VBA, comment inserer une listbox dans une cellule précise, lui définir sa liste déroulante et ajouter le code évenementiel qui va avec?
Pour certains d'entre vous, je pense que cela est un jeu d'enfant, mais pour un débutant comme moi, Aïe Aïe!!!!

A l'avance merci du coup de main.
 
M

michel

Guest
bonjour Nico

en lisant ton message j'ai interprété que ta listbox correspondait à une liste de validation ...
la procedure ci joint permet de créer une liste de validation dans la cellule active . La liste de données est définie en selectionnant une plage de celllules ( par inputbox )


Sub ListeDeroulante()
Dim Plage As Object
Dim Val As String
Dim Cible As String

Val = ActiveCell.Address
Set Plage = Application.InputBox("Sélectionnez une plage pour definir la liste de validation : ", Type:=8)
If Plage Is Nothing Then Exit Sub

Cible = Plage.Address

With Range(Val).Validation
.Add Type:=xlValidateList, Formula1:="=" & Cible
End With

End Sub



peux tu donner plus d'infos pour le code evenementiel , car je n'ai pas compris ce que tu veux faire .
j'espere que l'exemple ci dessus repondra deja en partie à ta question

bonnne soirée
michel
lapin4.gif
 
N

nico

Guest
Avant toute chose, Michel,merci de t'être interressé à mon problème, voici donc quelques précisions:

- Je veux inserer une listebox dans une cellule précise dans une feuille existante (çà tu le savais déjà!!)
- que cette liste contienne 2 items que je définirai dans mon code (choix1/choix2)
- que lorsque l'utilisateur choisi ensuite l'un ou l'autre des 2 choix de la liste, un évenement ce déclenche (ex: affichage du userform1 si choix1 sélectionné ou du userform2 si choix2 sélectionné).

J'espère que tu en sais maintenant plus sur le sujet.

A l'avance merci du coup de pouce.
 
M

Michel

Guest
Bonjour Nico

Tu peux insérer la procédure ci joint au niveau de la feuille pour faire apparaître des userforms différents selon la valeur choisie dans la liste ( la liste de choix doit être dans la cellule A6 pour l’exemple )


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Range("A6") = "choix1" Then UserForm1.Show ' à adapter selon cellule cible
If Range("A6") = "choix2" Then UserForm2.Show
Range("A6") = "" 'pour éviter un réaffichage des USF lors du 2eme clic sur cellule
End Sub

Il y a sans doute des solutions plus élégantes notamment avec Worksheet_Change , mais ma version d’Excel 97 ne me permets ce genre de fantaisies ( c’est pour ça par exemple que j’ai ajouté Range("A6") = "" à la fin de la procédure , sinon j’ai un réaffichage intempestif du userform quand je recliques sur la cellule A6 )


Pour la création de la liste de choix par VBA , si tu as systématiquement les 2 mêmes items , il y a possibilité de simplifier la macro que je t ‘ai envoyé hier
Par exemple :

Sub ListeDeroulante()
Dim Val As String
Val = ActiveCell.Address
With Range(Val).Validation
.Add Type:=xlValidateList, Formula1:="choix1,choix2"
End With
End Sub


Bonne journée
Michel
img
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry