bailong
Messages postés11Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention27 avril 2006
-
27 mars 2006 à 18:49
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
21 mai 2007 à 08:05
Salut à tous,
J'utilise le VBA d'excel et j'ai un problème pour créer des comboxbox automatiquement. Je m'explique :
En fait, j'ai une première combobox, je vais
parcourir Active Directory, et enregistrer toutes les OU (les dossiers)
dans cette 1ière combobox. Ensuite, quand on clique sur la combobox
pour choisir la valeur (le nom de l'OU ou dossier), on va parcourir
l'OU choisi pour verifier si a l'interieur il n'existe pas d'autre OU,
si c'est le cas, une deuxieme combobox se créée avec les OU trouvées.
(Je ne sais pas si j'ai été assez clair -__-" )
Bref, donc là où j'ai mon problème, c'est au moment
de créer cette 2ième ComboBox automatiquement... J'ai vu rapidement,
sur le net que l'on pouvait le faire avec controls.addou encore load (mais avec load, il faut connaitre le nombre d'élément), mais je n'ai pas réussi.
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 30 mars 2006 à 13:11
Bon,
d'abord, non, je n'ai pas dit que le problème dépend de l'OS ou des versions d'Office, mais, comme je n'arrive pas à reproduire ton défaut sur quelques postes, je préfère trouver le poste le plus près de ta configuration.
Ca marche sur :
NT 4.0, Office 2000 (il me semble même avoir essayé 97)
W2k, Office 2000, 2002, 2003 XP SP1, Office 2002 j'ai pas d'XP SP2!, je suis fumeur et je n'aime pas les patchs! (ce qui ne veux pas forcément dire que cela vient d'SP2)
Question subsidiaire : Arrives-tu à situer (à poser) un ComboBox sur un UserForm, en mode Design ? En fait, je suis parti du principe que oui car tu dis "En fait, j'ai une première combobox", mais est-ce que tu l'as vraiment fait?
ne me réponds pas non!
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 28 mars 2006 à 00:31
Salut bailong,
avec load, il ne s'agit de connaitre que l'indice du contrôle que tu ajoutes. Je m'explique brièvement :
- la ComboBox qui est sur ton Form doit avoir la propriété Index définie à 0 (pas vide, mais 0), dans la page des propriétés du composant (F4). Ce qui donne en code, par exemple, cboMaListe(0)
- quand tu veux en ajouter une, logiquement, la prochaine est celle d'indice 1. Donc tu pourrais faire :
Load Me.cboMaListe(1)
- Mais en plus, quand tes ComboBox sont "groupées" (cad, comme ci-dessus, avec un indice donc [ça revient à un tableau de ComboBox]), elles se comportent comme une collection ; Elles te permettent de connaitre le nombre d'éléments de la collection via la méthode .Count.
Si tu n'as pas encore ajouté la ComboBox de l'exemple ci-dessus, la méthode Me.cboMaListe.Countte répond 1, et ça tombe bien, c'est justement le prochain indice que tu veux utiliser!
Du coup, tu peux écrire :
Load Me.cboMaListe(Me.cboMaListe.Count)' et ça marche tout le temps
à+, n'hésite pas à demander, sans passer des heures à chercher (je dis çà parce que j'imagine que tu vas vouloir les supprimer après)
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 28 mars 2006 à 08:57
Salut,
Sauf erreur de ma part, en VBA Excel, les composants insérés dans un Userform, ne possède pas la propriété index. Donc impossible d'utiliser Load et Unload comme il serait possible de le faire en VB6.
En revanche il y à déjà eu pas mal de post sur le forum quant à la création d'objet dynamiquement sous Excel.
Un petit tou avec le moteur de recherche devrait pouvoir te donner pas mal d'infos.
@+, Julien Pensez: Moteur de Recherche, Réponse Acceptée
Vous n’avez pas trouvé la réponse que vous recherchez ?
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 29 mars 2006 à 11:15
Salut bailong,
je vais essayer d'être plus efficace qu'hier, l'erreur, c'est parce que tu référence une classe de VB ("vb.label", "Vb.ComboBox") et que tu n'as pas VB. Il te faut référencer des classes d'Office par exemple, les composants Microsoft Forms 2.0 Object Library :
Nom de classe Description
MSForms.ListBox Liste
MSForms.ComboBox Liste combinée déroulante
mais aussi :
MSForms.Frame cadre
MSForms.MultiPage boite d'onglets
MSForms.Image Image
MSForms.SpinButton bouton haut/bas
MSForms.Label Etiquette
MSForms.TextBox Champ de saisie
MSForms.ToggleButton bouton poussoir
MSForms.OptionButton bouton d'option
MSForms.CheckBox bouton case à cocher
alors, qu'en penses-tu?
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 29 mars 2006 à 12:33
c'est un n° de version interne, t'inquiètes.
au fait, juste pour information, quelle est ta version d'Excel, et ta version d'OS.
Allez, une petite manipulation ne te fera pas de mal :
- Menu Démarrer, choisis Exécuter, et dans Ouvrir, écris "regedit"
- Dans l'Editeur du registre, choisis le menu Edition>>Rechercher.
- dans le champ Rechercher, écris ComboBox, et cliques le bouton Suivant.
- s'il te trouve un n° de GUID (chaine de caractères incompréhensible qui représente le n° identifiant un composant COM), ouvre le dossier (en double-cliquant l'icone dossier), et regarde ce qui est écris dans le dossier ProgID (c'est la valeur qu'il faut que tu utilises)
- s'il n'a rien trouvé pour ComboBox (ce qui m'étonnerait pas mal, mais tout est possible), cherches Forms, ou MSForms, ou VB, et dis-moi ce que tu trouves.
Attention, quand on recherche, il ne trouve pas forcément ce que l'on cherche du 1er coup, auquel cas, il faut appuyer sur la touche [F3].
Comment sait-on s'il a trouvé ce qu'il faut ou pas, ben, ce qu'on cherche c'est le ProgID du ComboBox.
allez, au boulot,
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 30 mars 2006 à 11:39
Bon,
vu que tu as de l'élan, 2ème manipulation :
- Retournes dans l'Editeur du Registre, à la clé ProgID où tu as trouvé "Forms.ComboBox.1".
- Sélectionnes, dans l'arborescence de gauche, la clé parente de l'élément ProgID (ça doit être quelque chose comme {88D21D30-EC42-11CE-9E0D-00AA006002F3}), de manière à ce que la clé (parente donc) soit surlignée.
- Dans le menu Registre, choisis Exporter un fichier du Registre. Donnes-lui un chemin (que tu sauras retrouver), et un nom de fichier (genre MSFCombox.txt).
- Ouvre ce fichier avec le Bloc-Notes, et postes le contenu ici.
(s'il te plait)
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
Mais est ce qu'après, avoir résolu le problème, le programme marchera
sur differents postes (version de l'OS et version d'excel differente),
puisqu'apparement ce problème à l'air de déprendre des versions de l'os
et d'office ?
bailong
Messages postés11Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention27 avril 2006 30 mars 2006 à 14:06
oui oui, t'inquiete pas je me débrouille quand même
^^, je suis pas 100% noob. Mais disons que des fois, il y a des
fonctions que l'on a jamais rencontré... et on galère dessus.
Mais le mieux ca ne serait pas que je te passe l'appli que j'essai de faire?
ayara1983
Messages postés1Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention17 mai 2007 17 mai 2007 à 19:16
bonjour , mon probleme que j'ai un combo box remplis par des information , et je dois faire le lien avec uen table de la base de donné ca ve dire quand je choisis un champs dans le combo box il faut l'enregister dans la table correspendante .
j'ai aucune idée comment le faire est ce que vous pouvez m'aidez !!!!!!!
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 mai 2007 à 08:05
Salut,
> [auteurdetail.aspx?ID=1050451 ayara1983], repose une question dans le forum plutot que de continuer ce post qui est résolu (principe de base d'un forum).