sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010
-
26 févr. 2008 à 15:43
sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010
-
28 févr. 2008 à 12:28
Bonjour,
Je ne suis pas arriver a comprendre le combo box.
J'aimerai inserer un combo box dans ma feuille excel dont les differents choix se trouvent dans la feuille, U10:U14 (je ne sais toujours pas comment faire pour selectionner cette liste).
Les fonctions de la combo box seraient si choix de la cellule U10 faire un filtreX, si choix de la cellule U11, faire un filtreY...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 févr. 2008 à 00:17
Tu aurais probablement plus de chance de recevoir des réponses si tu postais sur le forum dédié à VBA... voir ma signature...
Suggestion: utilise le combobox de la barre d'outils Visual Basic et pas celui de la barre Formulaires
Les contrôles de la barre VB ont des événements que tu retrouves dans l'IDE VBA (Alt-F11)
Pour charger ce combobox, utilise l'événement Workbook_Open dans la partie ThisWorkbook. Donc, dès l'ouverture de ton classeur, ton combobox sera chargé à l'aide de AddItem.
Ensuite, dans le code la feuille qui contient ce combobox, tu utilises l'événement Click() pour déterminer l'item qui a été sélectionné. Selon le choix, tu appelles une fonction qui trie.
C'était les grandes lignes du téléjournal de 18 heures... en attendant les précisions.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
1)dans les proprietes de la combobox, dans la propriete ListFillRange tu ecris directement U10:U14
2) Dans un evenement comme par exemple :
pour initialiser la liste de la combo a l'ouverture du fichier (a mettre dans le code du document : ThisWorkBook):
Private Sub Workbook_Open()
UpdateListCombo
End Sub
pour pour reinitialiser la liste de la combo si une valeur change dans la plage de reference de la liste (a mettre dans le code de la feuille correspondante)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target If .column 21 then '21 colonne U
If .row > 9 and .row < 15 then UpdateListCombo
End If
End With
End Sub
dans un module :
Sub UpdateListCombo ()
With Worksheets("Feuil1")
.Combobox1.List() = .Range("U10:U14").Value
End With
End Sub
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 27 févr. 2008 à 18:23
Salut,
if Combobox1.value = "Joe" then
filtreX
Else if Combobox1.value = "William" then
filtreY
Else if Combobox1.value = "Jack" then
filtreZ
Else if Combobox1.value = "Avrell" then
Manger
End If
ou autre solution
Select Case Combobox1.value
Case "Joe"
filtreX
Case "William"
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 févr. 2008 à 11:56
Est-ce que ta feuille est protégée avec mot de passe ?
Si oui, tu dois l'intégrer aux 2 commandes UnProtect et Protect. Voir l'aide.
Autrement, je ne vois pas trop pourquoi ça ne fonctionne pas (?)
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010 27 févr. 2008 à 16:33
Bonjour,
Merci à vous pour votre aide.
J'ai ma liste déroulante, c'est , mais je n'ai pas compris comment determiner quelle valeur est sélectionnée parmis la plage du combo box.
Je suis désolé de vous poser des questions qui parraissent bête, mais je suis un débutant (un vrai, un dur)
Ps: je ne suis pas libre le mercredi soir pour des diners
sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010 27 févr. 2008 à 19:06
Merci pour toutes vos réponses, j'ai fais un mixte de tous ça et je suis passé par une listbox ça donne ça:
Private Sub ListBox1_Click()
If ListBox1.Selected(0) = True Then ActiveSheet.Range("$A$9:$F$3568").AutoFilter Field:=6
If ListBox1.Selected(1) = True Then ActiveSheet.Range("$A$9:$F$3568").AutoFilter Field:=6, Criteria1:="605"
If ListBox1.Selected(2) = True Then ActiveSheet.Range("$A$9:$F$3568").AutoFilter Field:=6, Criteria1:="6068"
If ListBox1.Selected(3) = True Then ActiveSheet.Range("$A$9:$F$3568").AutoFilter Field:=6, Criteria1:="60628"
If ListBox1.Selected(4) = True Then ActiveSheet.Range("$A$9:$F$3568").AutoFilter Field:=6, Criteria1:="60631"
If ListBox1.Selected(5) = True Then ActiveSheet.Range("$A$9:$F$3568").AutoFilter Field:=6, Criteria1:="60632"
If ListBox1.Selected(6) = True Then ActiveSheet.Range("$A$9:$F$3568").AutoFilter Field:=6, Criteria1:="60641"
End Sub
Le seul hic, c'est qu'il y a une erreur lorsque la feuille est protégée, malgrés que j'autorise le filtre automatique.
Et change Feuil1 pour le nom de la feuille que tu veux...
Pour ta procédure, si tu n'as que 7 items, c'est pas trop mal. Mais si tu prévois avoir des dizaines d'items voire plus, il faudrait améliorer le code et appeler une fonction qui servirait à faire le tri...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI