Fonction Combobox

shenkool Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 21 septembre 2009 - 3 juil. 2009 à 09:07
shenkool Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 21 septembre 2009 - 6 juil. 2009 à 21:58
Bonjour,

Je souheterai créer un sub permettant d'effacer le contenu d'une combobox mis en parametre. En effet dans mon programme j'efface plusieurs fois des combobox donc je voudrais pouvoir les mettres en paremetre dans ma fonction

Voici ce que j'ai fais mais cela ne fonctionne pas. Pour info je travaille sous Access, mais je pense que la solution a mon probleme n'est pas seulement limité a access mais a l'ensemble de la programmation en vba


EffacerCombobox (ListeFicheComposant) ' appel de effacerCombobox avec la
' combobox listefichecomposant
' en parametre

Sub EffacerCombobox(Ctrl As Access.ComboBox)

Ctrl.RowSourceType = "Value List"
Ctrl.RowSource = ""
Ctrl.Value = ""

End Sub

Quelqu'un pourai t'il m'aider
Je vous remercie d'avance

8 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
3 juil. 2009 à 11:02
bonjour
pourquoi faire toute cette usine à gaz alors que pour vider une combobox il suffit de faire
combobox.clear
ce qui ne prend pas plus de ligne que d'appeler ta sub

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
shenkool Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 21 septembre 2009
3 juil. 2009 à 23:53
Bonjour ou plutot bonsoir pile_poil

Desolé, mais je n'ai pas cette méthode pour les combobox sous access et si j'essaye quand meme la synthaxe que tu me propose il m'indique une erreur.
C'est peut etre une usine a gaz pour le peu d'interet que cela apporte mais je voudrais comprendre pourquoi cela ne fonctionne pas et ce qu'il faut y changer .
Cordialement
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2009 à 00:56
salut,

après un coup d'oeil aux propriétés, voici peut-être une possibilité :






Sub 
clearComboBoxes(
ParamArray 
ComboArray()
As Variant
)

    Dim c As Access.ComboBox
    For Each c In ComboArray
        c.ControlSource = Nothing
        c.Recordset = Nothing
        c.RowSource = vbNullString
        c.RowSourceType = vbNullString
    Next c
    Set c = Nothing
End Sub





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>






qu'est-ce que çà donne?

NB :
*pas testé et je ne suis pas fan de vba...
*même pas sûr que le FOR EACH fonctionne dans ces conditions, passer alors par le bouclage de lbound à ubound

<hr size="2" width="100%" />
0
shenkool Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 21 septembre 2009
6 juil. 2009 à 09:37
Bonjour PCPT,

Dans l'appel du sub je ne vois pas quoi mettre en parametre. Si j'ai bien compris avec l'appel du sub je met plusieurs index de combobox, mais ce n'est pas tout a fait ce que je veut faire.
je veux faire plus simple que ca (je suis debutant), en parametre je ne veux q'un seul combobox et envoyé son index ou son nom ou autre je ne sais pas.
Comme j'applerai plusieur fois l'effacement d'une differente combobox dans mes procedure,c'est pour cela que je desir mettre en parametre dans mon sub une reference de la combobox en question .
Merci.
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 juil. 2009 à 11:42
salut

[../auteur/SHENKOOL/903755.aspx shenkool]

,

comme tu avais indiqué "

dans mon programme j'efface plusieurs fois des combobox

", j'ai supposé que tu en nettoyais parfois plusieurs successivement

le sub devrait alors te permettre d'un nettoyer une ou plusieurs en un seul appel, avec directement le ou les noms des combo séparés par des virgules

sinon :


Sub 
clearComboBoxes(
byref



As 
Access.ComboBox




)

        c.ControlSource = Nothing
        c.Recordset = Nothing
        c.RowSource = vbNullString
        c.RowSourceType = vbNullString
End Sub






ps : tu parles d'index.... mais il n'y a pas d'index en vba access, si?....
0
shenkool Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 21 septembre 2009
6 juil. 2009 à 13:57
en faite il me renvoi une erreur n°424, "objet requis". Je l'ai refait dans un nouveau programme pour partir d'une base vide , mais le resultat est le meme.
voici le programme


Private Sub Commande2_Click()

clearComboBoxes (Modifiable0)

End Sub

Sub clearComboBoxes(ByRef c As Access.ComboBox)
c.ControlSource = Nothing
c.Recordset = Nothing
c.RowSource = vbNullString
c.RowSourceType = vbNullString
End Sub

Sinon concernant l'index, je suis pas un pro en programmation comme tu as du le constater mais pour moi quand je dis l'index c'est par exemple un numero qui renvoi a une control suivi son ordre de creation.
Merci encore PCPT pour l'aide que tu m'apporte
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 juil. 2009 à 14:14
Modifiable0 est bien le nom d'une combobox? => indispensable
elle se situe bien sur le même formulaire que celui qui contient le Commande2 ?=> sinon il faut la préfixer du nom du formulaire (frm3.modifiable0)

pour l'index, tu parles de la propriété TABINDEX alors?
si oui il correspond à l'ordre de navigation entre les contrôle, par la tabulation
un ordre de focus si tu préfères
ils s'incrémentent par défaut dans l'ordre de création des contrôles c'est vrai, mais son usage ne concerne pas leur identification

dans le pire des cas héberge ton fichier, je tenterai d'y jeter un oeil
(exemple de site d'upload gratuit : www.cijoint.fr)
0
shenkool Messages postés 15 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 21 septembre 2009
6 juil. 2009 à 21:58
J'ai essayé d'envoyé le fichier sur le site que tu m'as dit mais il prend pas en charge les extensions .mdb
Si tu un mail et si tu as le temps d'y jeter un oeil, je pourrai te l'envoyé.
Merci
Cordialement
0
Rejoignez-nous