Combo box

Résolu
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010 - 26 févr. 2008 à 15:43
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Derniè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...

Si une personne pouvait me venir en aide.

Merci par avance

14 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 févr. 2008 à 00:18
Salut,

t'es pas arriver a comprendre la liste des Theme non plus !  tu aurais du poster ici :

[infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA]

pour une combobox dans une feuille 2 solutions :

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

Pour plus d'info sur les controles c'est ici

A+
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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"

       filtreY
    Case "Jack"

       filtreZ
    Case "Avrell"

       Manger
End Select

A+
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 févr. 2008 à 11:07
Essaie en mettant ceci juste avant

Sheets("controle").UnProtect
Sheets("controle").Protect DrawingObjects:=True, _
            Contents:=True, Scenarios:=True, _
            userinterfaceonly:=True
Sheets("controle").EnableAutoFilter = True

Et n'oublie pas de mettre ça dans Workbook_Open()

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
28 févr. 2008 à 11:22
Merci MPi pour ton aide,

j'ai mis dans Thisworkbook:

Private Sub Workbook_Open()
Sheets("controle").Unprotect
Sheets("controle").Protect DrawingObjects:=True, _
            Contents:=True, Scenarios:=True, _
            userinterfaceonly:=True
Sheets("controle").EnableAutoFilter = True
End Sub

Mais ça ne marche toujours pas

VBA tu auras ma peau

Merci encore
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 févr. 2008 à 00:21
... Aaargh ! pas asser rapide

Salut MPi² ! 

A+
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
27 févr. 2008 à 00:25
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Derniè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


Seb
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Derniè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.


Merci encore.

Bonne soirée
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
27 févr. 2008 à 22:59
Pour pouvoir activer les filtres sur une feuille protégée, mets ceci dans le Workbook_Open de Thisworkbook

Sheets("Feuil1").Protect DrawingObjects:= True, _
            Contents:=True, Scenarios:=True, _
            userinterfaceonly:=True
Sheets(" Feuil1 ").EnableAutoFilter = True

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
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
28 févr. 2008 à 10:25
Bonjour,
J'ai mis dans Thisworkbook:
Sheets("controle").Protect DrawingObjects:= True, _
            Contents:=True, Scenarios:=True, _
            userinterfaceonly:=True
Sheets(" controle ").EnableAutoFilter = True

Mais l'erreur d'execution "1004" apparait toujours car la feuille est protégée.

Merci de votre aide
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
28 févr. 2008 à 12:05
oui la feuille est protegéepar MDP, je vais essayer de l'integrer aux commandes.

Merci encore
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
28 févr. 2008 à 12:28
Merci MPi, ça marche

J'ai mis:
Private Sub Workbook_Open()
Sheets("controle").Unprotect 'mdp'
Sheets("controle").Protect 'mdp' DrawingObjects:=True, _
            Contents:=True, Scenarios:=True, _
            userinterfaceonly:=True
Sheets("controle").EnableAutoFilter = True
End Sub

Encore merci,

Bon je vais continuer à améliorer le fichier

Bonne journée
0
Rejoignez-nous