exemple d'interaction Listbox et feuille Excel en VBA
Bonjour,
Je souhaitais dans une feuille placer une listbox qui permetrait de choisir dans une liste "Le_Cas_Produit"
"Le_Cas_Produit" est le nom d'une liste d'une vingtaine de cellules contenant des "nomsStrings complexes, longs pas facile à mémoriser"
J'ai un fichier de quelques centaines de lignes auquel je dois affecter un "Le_Cas_Produit"
J'avais imaginer faire une listebox dans la première cellule et la copier coller dans les cellules se la colonne mais cela ne marchait pas.
J'avais besoin d'automatiser cette action (en code vba sur Excel 2007)
création de listebox et une fois créer
de copier coller dans toutes les cellules de la colonne
J'ai cherché et finalement trouvé,
(J'ai enlevé le mauvais code et laissé le code qui marche)
Le code que j'ai créé
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| ' ajout des listbox v============================================================================
Sub EssaiListbox3()
Dim Adres As String
Dim sht As Worksheet
Dim RCell As Range
Dim i As Integer
Dim NbCol As Integer
Dim NbLign As Integer
Adres = ActiveCell.Address
NbCol = ActiveCell.Column 'pour le test
NbLign = 20 'pour le test
' "Le_Cas_PRODUIT" = nomDefini d'une liste nommée
' ajout des listbox v============================================================================
Adres = ActiveCell.Address
Set sht = ThisWorkbook.Worksheets("Samples2")
sht.DropDowns.Select
sht.DropDowns.Delete 'pour effacer mes précédents essai
Set RCell = Cells(2, NbCol + 1)
With RCell
sht.DropDowns.Add(.Left, .Top, .Width, .Height).Name = "Combo Box 3"
End With
sht.DropDowns.Select
Stop
With Selection
.ListFillRange = "Le_Cas_PRODUIT"
' .LinkedCell = Adres
.DropDownLines = 8
End With
' Positionnement sur une cellule;:
Range(Adres).Select
For i = 3 To NbLign
Cells(i, NbCol).Select
sht.DropDowns(1).Select
With Selection
.ListFillRange = "Le_Cas_PRODUIT"
' .LinkedCell = Adres
.DropDownLines = 8
End With
' la suite envisagée pour copier coller jusqu'à la dernière ligne
RCell.Copy (Cells(i, NbCol + 1))
Next i
End Sub |
Je souhaite récupérer la valeur selectionnée de la listebox dans une cellule voisine comment fait-on ?
1ere étape :
Code:
1 2 3 4 5 6 7 8 9 10
|
Dim RefCellEnCours As Range
Set RefCellEnCours = Cells(i, NbCol + 2)
With Selection
.ListFillRange = "Le_Cas_PRODUIT"
.LinkedCell = RefCellEnCours.Address
.DropDownLines = 8
End With |
2nde étape à partir de la valeur de l'index reconstruire le texte de l'élement sélectionné :
dans la cellule à droite de ma "listbox" je tape =INDEX(Le_Cas_PRODUIT;BN6;1)
BN6= adresse emplacement de l'index déposé étape 1 par ma listebox
Remarque Le_Cas_Produit ne comporte qu'une colonne
Merci de votre attention