Pierre,

Envoyé par
Pierre Fauconnier
Bonjour Thierry,
Pourquoi veux-tu modifier cela? Qu'auras-tu de plus à utiliser une chaine de caractères? L'avantage de passer le combo en tant qu'objet te permet de le manipuler comme tel dans ta procédure, et donc de ne pas devoir le redéfinir à l'intérieur de la procédure.
Je me suis posé la même question que toi : quel intérêt d’utiliser une chaine de caractères.
J’ai répondu pour 2 raisons :
- Thierry a droit à une réponse, même si la demande nous paraît farfelue de prime abord. Je n’ai pas ici une fonction de contrôleur, destiné à juger sévèrement les demandes : si un exemple de code est aberrant, je vais le dire, mais s’il est juste "suboptimal" (pour citer un vieil ami), je ne sens nullement obligé d’expliquer tout ce qui ne va pas, selon moi.
- J’ai suppposé qu’une justification possible était de traiter plusieurs combo situés au même endroit, auquel cas, "MultiPageMachines.pgMachine1.cbConstructeur" pourrait être stocké dans une variable, "Racine" par exemple, ce qui permettrait de remplacer :
Call InitCb(FicParamètres, 4, "A1", "A", MultiPageMachines.pgMachine1.cbConstructeur1)
par
Call InitCb(FicParamètres, 4, "A1", "A", Racine & 1)
ou mieux encore, par
InitCb FicParamètres, 4, "A1", "A", Racine & 1
le mot clef "Call" étant un résidu des Basic d’autrefois, parfaitement superflu en VBA.
Il est vrai que même dans ce cas,
InitCb FicParamètres, 4, "A1", "A", Controls(Racine & 1)
en conservant
dans la Sub "InitCb serait encore mieux 

Envoyé par
Pierre Fauconnier
La procédure de Michel fonctionnera si et seulemement si le parent du combo est l'objet ME, c'est-à-dire si ta procédure qui utilisera le nom du combo se trouve dans le module de classe de l'objet qui contient le combo (un userform en l'occurence, car les feuilles de calcul ne contiennent pas de collection controls). Si ta procédure se trouve ailleurs que dans ce module de classe, tu devras préfixer Controls(RefCombo).AddItem...
Pourrais-tu nous dire l'utilité de la modification?
Tout à fait, mais
Call InitCb(FicParamètres, 4, "A1", "A", MultiPageMachines.pgMachine1.cbConstructeur1)
dans l’exemple de code laisse fortement penser que le ComboBox est situé sur une page d’un contrôle Multipage.
Comme ce contrôle Multipage, "MultiPageMachines" est utilisé directement, sans préfixe, on peut en déduire que le code applelant la Sub "InitCb" se trouve dans le module associé au UserForm concerné (sauf si l’objet MultiPage est posé directement sur une feuille de calcul), ce qui me paraît hautement improbable.
Il est également très peu probable que la procédure "InitCb" se trouve dans un autre module, et si c’était le cas, cela appellerait d’autres critiques. À défaut d’info complémentaire, j’ai effectivement supposé que "InitCb" était dans le module du UserForm.
Cordialement,
Partager