Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1423 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Débutant Référencer un Combo box

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Débutant Référencer un Combo box

n°918781
FarookFree​man
Posté le 09-12-2004 à 14:17:52  profilanswer
 

Bonjour,
 
Je souhaite réaliser de facon générique une petite application, à partir de VBA et excel.
 
Pour cela, je souhaite :  
- construire des combo box (à partir de VBA)
- garder dans des variables globales des références sur ces combo box
- pouvoir accéder aux propriétés et méthodes (additem,...) des combos box à partir de ces variables
 
Jusque là, je n'ai pas trouvé d'autre moyen de procéder que ce qui suit :
 
' variables globales
Dim mycombo As OLEObject
 
' ma macro sub
Set mycombo = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1" )
 
Avec la variable mycombo (OLEObject), je peux bien accéder au nom du combo créé. Mais je n'ai aucun moyen de lui appliquer la méthode addItem.  
Il faudrait donc que je trouve un moyen de le référencer comme un ComboBox (Dim mycombo as ComboBox), mais dans ce cas, l'execution du code suivant ne fonctionne pas (car OLEObject.Add retourne un OLEObject et pas un ComboBox)
Set mycombo = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1" )
 
---> error : type mismatch
 
D'ou ma question de débutant, comment pourrais je faire un truc comme ça :
 
Dim mycombo as ComboBox
set mycombo=CreateCombo ( parametres ... )
 
Ou y a t il un moyen alternantif pour référencer des OLEObject et utiliser les méthodes spécifiques (additem,...) ?

mood
Publicité
Posté le 09-12-2004 à 14:17:52  profilanswer
 

n°918881
GuiGui013
Posté le 09-12-2004 à 15:29:21  profilanswer
 

Si tu fais 1 truc comme ça :
Dim MyCombo as ComboBox
MyCombo.Name = "NomDeLaCombo"
MyCombo.Height = "Position"
 
etc...
 
Non !?

n°918957
FarookFree​man
Posté le 09-12-2004 à 16:48:48  profilanswer
 

Non, ce que je souhaite faire, c'est récupérer une référence (ou une adresse) sur un combo que je créé sous VBA.
 
Ou bien un identifiant de combo qui me permettrait d'y accéder.
 
Ce code :
 
Dim MyCombo as ComboBox  
MyCombo.Name = "NomDeLaCombo"  
MyCombo.Height = "Position"  
 
suppose que MyCombo soit défini, non ?
 
=> à l'éxécution il me dit variable not set (vérifié).
 
 
 

n°919005
mick1884
Intelligence Non Artificelle
Posté le 09-12-2004 à 17:35:43  profilanswer
 

avant mais un MyCombo = new ComboBox  


---------------
Le programme et toujours piratable, quelqu'en soit l'auteur, un autre homme le contournera...
n°919038
FarookFree​man
Posté le 09-12-2004 à 18:03:39  profilanswer
 

Apparemment, cette syntaxe n'est pas possible.
Faudrait faire ça avec
 
Dim MyCombo as new Combobox
 
mais c'est pas possible non plus.
 

n°919105
FarookFree​man
Posté le 09-12-2004 à 19:00:09  profilanswer
 

MyCombo = new ComboBox >> j'aurais bien aimé que ce soit aussi simple :)

n°919282
Profil sup​primé
Posté le 09-12-2004 à 23:06:54  answer
 

pour créer un combo dynamiquement
 
 
Private WithEvents Combobox1 As MSForms.ComboBox
 
Private Sub UserForm_Click()
Set Combobox1 = UserForm1.Controls.Add("Forms.Combobox.1", "CB1", True)
End Sub

 
Pour traiter les evenements tu devras utiliser le nom "Combobox1"


Message édité par Profil supprimé le 09-12-2004 à 23:11:55
n°919307
FarookFree​man
Posté le 10-12-2004 à 00:16:29  profilanswer
 

gargamail>> Je n'arrive pas à compiler le code. Mais en fait je veux insérer des combo box dans une feuille excel, donc j'utilise OLEObject à la place de Controls
 
Est que ça change quelque chose que j'essai de faire ça sur des feuilles excel ?

n°919324
Profil sup​primé
Posté le 10-12-2004 à 01:26:20  answer
 

la méthode est similaire pour une feuille :
 
ActiveSheet.OLEObjects.Add ClassType:="Forms.ComboBox.1", Link:=False,DisplayAsIcon:=False, Left:=80, Top:=80, Width:=150, Height:=30
 
Pour ajouter un item dans le combo crée :
 
ActiveSheet.OLEObjects("Combobox1" ).Object.AddItem "bonne nuit :)"


Message édité par Profil supprimé le 10-12-2004 à 01:46:53
n°919326
Profil sup​primé
Posté le 10-12-2004 à 01:49:45  answer
 

on peut meme mettre ca directement sans avoir de nom d'objet :
 
 ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=80, Top:=80, Width:=150, Height:=30).Select
     
 NOM = Selection.Name
     
 ActiveSheet.OLEObjects(NOM).Object.AddItem "coucou"

 
ca permet de le mettre dans une boucle sans avoir a se soucier du nom du controle crée ( et sans etre obligé de crée des references objets du style "dim truc as OLEObject" )
 
PS: du coup tu peut garder les references de tes combo dans un tableau ( style NOM(100) ) puis faire appel au proprietes de ton combo n° 72 par ex :
 
ActiveSheet.OLEObjects(NOM(72)).Object.Clear
 
:)


Message édité par Profil supprimé le 10-12-2004 à 01:55:33
mood
Publicité
Posté le 10-12-2004 à 01:49:45  profilanswer
 

n°919640
FarookFree​man
Posté le 10-12-2004 à 14:16:55  profilanswer
 

Merci gargamail
 
J'avais pas essayé avec la propriété object. D'ailleurs je comprends pourkoi il faut mettre un object avant le addItem.
VB est langage un peu tordu, je trouve ...
 
Mais bon ça marche donc merci encore.
Sinon en fait y a meme pas besoin de faire ça par le nom :
on récupère la référence sur l'object :
 
Dim monobjet as OLEObject
 
set monobjet=ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", ...)
 
monobjet.Objet.addItem "item1"
 
Ca permet de stocker uniquement des petites références et pas les noms entiers (si je me trompe pas :) ).

n°919660
Profil sup​primé
Posté le 10-12-2004 à 14:26:26  answer
 

oui c'est clair, l'eventuel inconvenient est si tu as plusieurs dizaines de controles identiques a gerer dans le restant de ton code, voire meme si tu veux faire des appels a un control bien precis par la suite.
Mais tout depend evidemment de l'objectif :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Débutant Référencer un Combo box

 

Sujets relatifs
Je voudrais créer un script mais je suis super débutant ![c]Debutant sous xp
[PROB] PHP debutant - Retour a la ligneprob de variable (debutant)
débutant en VBA (petit probléme)Intégration de pages PHP sur un site - débutant
Debutant :Token et Vectordébutant c++ gtk cherche aide pour petit programme
débutant recherche aide pour gtk et c++[Débutant] Optimisation d'un menu
Plus de sujets relatifs à : Débutant Référencer un Combo box


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR