IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Est il possible de creer dynamiquement des controles en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Points : 69
    Points
    69
    Par défaut [VBA-E] Est il possible de creer dynamiquement des controles en VBA
    Je souhaite creer de façon dynamique des contrôles dans une userForm en VBA sous Excel.

    Si cela est possible, par avance merçi de bien vouloir m'orienter.

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Question intéressante! J'ai fouillé un peu de mon côté mais n'ai rien trouvé de probant pour le moment. J'ai regardé du côté de la fonction CreateObject et aussi la méthode Controls.Add mais n'ai pas eu les résultats escomptés. Il faut dire, que je n'avais encore jamais essayé ce genre de gymnastique. Qu'as-tu essayé? Quels résultats as-tu obtenu?

  3. #3
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    C'est encore moi,

    J'ai trouvé ça dans la FAQ.

    Serait-ce là ce que tu cherchais?

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut,

    C'est re-encore moi

    Si tu cherches bien dans l'aide de VBA (chez moi j'ai Office97) dans l'index, les mots "Add, méthode", tu risques de tomber sur la référence de la méthode Add. Clique sur le lien Exemple. On y crée un bouton de commande. Ça devrait marcher avec les autres contrôles de la boîte d'outils.

    Bye!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    J'ai tester divers methode du style AddLibel et autes qui semble bien fonctionner sur une feuille Excel, mais je ne parviens pas à les adapter à une UserForm.

    J'ai testé ce que tu as trouvé dans la FAQ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim objWorksheet As Worksheet
    Set objWorksheet = ThisWorkbook.Worksheets(1)
    objWorksheet.Shapes.AddOLEObject "Forms.CommandButton.1", , , , , , , 141, 28.5, 153, 27.75
    Même constat : cela fonctionne bien avec une feuille Excel, mais comment l'adapter à une UserForm, si celà est possible !!!

    Je fonctionne avec Excel2000

    Merçi zazaraignée pour ces diverses tentatives

  6. #6
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    As tu essayé les createControl. Je l'ai déjà fais sous access mais sous excel, mais je pense que ça marche, ça doit être général à VB ça.

    Salut.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    Je n'ai pas trouvé de Méthode ou Fonction CreateControl dans l'aide en ligne ! ! !

    Merçi quand même

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Selon l'exemple mentionné plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim Mycmd as Control
    Set Mycmd = Controls.Add("Forms.CommandButton.1") ', _
       CommandButton2, Visible)
    Mycmd.Left = 18
    Mycmd.Top = 50
    Mycmd.Width = 175
    Mycmd.Height = 20
    Mycmd.Caption = "C’est amusant." & Mycmd.Name
    C'est dans l'aide de VBA

  9. #9
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Pardon,
    je pensais que ça marcherai aussi sous EXCEL. J'ai essayé mais effectivement, createControl n'est pas trouvé.
    Ca doit donc être une fonction spécial ACCESS, je me suis un peu avancé.

    Salut

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    Bravo et merçi à zazaraignée, ça fonctionne bien.

    Je ne connais pas ta technique de recherche, mais même avec la solution, j'ai du mal à la trouver dans l'aide en ligne VBA.

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Et sous Excel 2000, y a-t-il une propriété Index à tes contrôles ? Parce que si c'est le cas, il y a plus simple.

    Tu crées un premier contrôle et tu lui mets sa propriété Index à 0 (zéro). Ensuite, dans ton Form_Load, tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim nMaxCtrls as Integer  'nombre maximum de contrôles
    Dim x as Integer   'compteur
    For x = 1 to nMaxCtrls
       Load monControle(x)
       ' autres paramètres de monControles
       ' comme sa position sur la feuille et
       ' son Caption
       monControle(x).Visible = True
    Next x
    C'est ce que j'ai cherché au départ. Mais sous Office 97, les contrôles de Form n'ont pas de propriétés Index.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    Il n'y a pas d'index pour les controles sous Excel2000. Cette technique ne peut marcher qu'avec VB et non en VBA sous Excel2000.

  13. #13
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    C'est beau, merci. C'est que chez moi, je suis encore sous Office97. Suis donc pas au courant de toutes les améliorations des versions plus récentes. Donc pas d'index...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] est-ce possible de faire intervenir des données excel dans un html?
    Par guismoman33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/03/2007, 12h22
  2. [VBA-A]Est-il possible d'utiliser un ArrayList en VBA?
    Par Caroline1 dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/03/2006, 15h19
  3. [Outil] est il possible de creer des aplications avec php
    Par reski dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/03/2006, 18h25
  4. est il possible de créer dynamiquement une class ???
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 12/07/2005, 16h22
  5. Réponses: 4
    Dernier message: 16/04/2005, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo