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 ajout de bouton dynamique dans userform + action sur bouton ajouté


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut vba ajout de bouton dynamique dans userform + action sur bouton ajouté
    Bonjour à tous,

    Afin de favoriser la réutilisation d'une macro, je voudrais pouvoir faire en sorte que dans l'userform de la macro, les CommandButton n'ont pas besoin d'être ajouté "à la main" sur le UserForm mais qu'ils soient ajoutés et positionnés dans la macro.

    Voici un extrait de mon code UserForm (exemple pour l'ajout d'un seul bouton):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub UserForm_Initialize() 
     
        Dim ActWB As Workbook 
        Dim I As Integer 
        Dim Bouton1 As Control 
     
        With UserForm1 
            .StartUpPosition = 2 
            .Height = 100 
            .Width = 150 
        End With 
     
        Set Bouton1 = UserForm1.Controls.Add("Forms.CommandButton.1") 
        With Bouton1 
            .Name = "BoutonOK" 
            .Caption = "OK" 
            .Left = 25 
            .Top = 50 
            .Width = 50 
            .Height = 18 
        End With 
     
    End Sub
    Par ailleurs j'ai une combo qui permet de choisir un onglet d'une 2eme feuille, et donc lorsque l'on clique sur le bouton OK, il faudrait que cela valide l'onglet choisi...seulement lorsque je mettai le bouton "à la main" sur l'UserForm tout marchait comme il faut, et la en l'ajoutant dans le code de la macro comme ci-dessus, le click sur le bouton OK n'a plus aucun effet

    Ou est-ce que je dois mettre le code suivant pour qu'il soit pris en compte ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub BoutonOK_Click() 
        Dim onglet As String 
        onglet = combo.text 
        ActiveWorkbook.Sheets(onglet).Activate 
        Unload Me 
    End Sub

    Merci pour vos réponses !

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Je pense que tu dois ajouter le code au clique sur UserForm1, vue que ton bouton est ajouter sur celle-ci.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Mais si plusieurs boutons sont sur l'UserForm, je ne peux pas le faire sinon il va y avoir la même action quel que soit le bouton va être cliqué ...

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Ok je voi pas bien ton problème je t'avou ... j'essai de comprendre l'interêt réel ... tu veux que tous tes boutons se génère en automatique ? et qu'il ai chacun une action bien définie ... ?

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour,
    premièrement sache que ce que tu cherches a faire n'est pas évident et je te conseil si tu ne maitrise pas le VBA d'essayer d'envisager d'autre solution (exemple des boutons invisible qui devienne visble a mon avis cela devrais te suffire mais je peux me tromper).

    Si tu n'as pas d'autre alternative, il va te falloir écrire le code de tes macro pas macro (je te laisse retrouver le tutoriel la dessus dans la rubrique tutoriels excel)

    Edit : a la relecture je suis aussi sceptique que mikaz si tu n'a qu'un seul bouton dès l'ouverture du userform pourquoi chercher a le créer de manière dynamique et pas de le faire a la main une fois pour toute sans te prendre la tête

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    En fait mon objectif est de pouvoir facilement reutiliser la macro (installation sur plusieurs pc par des personnes différentes etc ...) , c'est à dire qu'un simple copier coller dans le module et dans l'userform suffira à la faire marcher ... donc pour cela je veux supprimer la mise en place des boutons sur l'userform "à la main" (donc eviter l'ajout manuel avec la boîte à outils).
    L'affichage des boutons marche bien, j'ai réussie à le faire en le codant, ce qui me pose problème c'est définir l'action lorsque je vais cliquer sur "OK" ou "Annuler" par exemple

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Si j'ai bien compris chacun de tes boutons a un nom définie, mais a en caption : "OK", si chacun de tes boutons a un nom différent (définie a l'ajout) il te suffit de définir une action par nom de bouton ?

  8. #8
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Tu sais que tu peux importer et exporter des module?
    ou utiliser des macro complémentaire (je n'ai jamais essayé vraiment)
    A mon avis cela serait bien plus simple que ce que tu cherche a faire (surtout la première méthode, clique droit sur le module ou le userfom tu choisie exporter un fichier, il ne te restera plus qu'a faire dans le nouveau dossier clique droit importer)

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Voilà chacun a un nom différent, et selon le bouton sur lequel on clique, une action différente sera réalisée.
    Dans mon premier post tout en haut, je montrais ce que j'avais fais pr le bouton OK. Donc je l'ai créé dans le Userform_Initialize et ensuite j'ai fait une autre Private Sub pour définir l'action lorsque l'on clique sur ce bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub BoutonOK_Click() 
        Dim onglet As String 
        onglet = combo.text 
        ActiveWorkbook.Sheets(onglet).Activate 
        Unload Me 
    End Sub
    Mais ca ne marche pas ... Au lancement de la macro lorsque l'UserForm s'affiche, le bouton y est, mais rien ne se passe en cliquant dessus.

    Je ne sais pas si c'est une erreur dans la façon de l'écrire ou autre chose peut être

  10. #10
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Il te suffit d'ajouter ta "Private Sub" (comme tu dis si bien ) dans don UserForm ...

    Enfin vue que tous fait partie d'une UserForm, tu devrai ecouter Krovax !

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Krovax, oui j'ai essayer d'exporter et importer ma macro dans un autre classeur, et ca fonctionne!
    Je pensais que ca allait uniquement importer le "code", et non, l'emplacement des boutons est conservé , c'est exactement ce que je voulais !

    Merci à vous deux !

  12. #12
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Comme quoi parfois vaux mieux essayer que penser (mais bon en faisant ca je perds perd beaucoup de temps la dessus )
    Pense a cliquer sur en bas de la discutions

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

Discussions similaires

  1. Ajout JTable à un panneau dans une action sur un item
    Par rannou2609 dans le forum Composants
    Réponses: 1
    Dernier message: 21/04/2011, 20h53
  2. [VBA Excel] Un tableau dynamique dans un type utilisateur?
    Par cyber_N dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/07/2006, 19h51
  3. Ajout de ligne dynamique dans un tableau (Incompatible IE)
    Par seb34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 26/05/2006, 11h03
  4. [FLASH 8] Changer label bouton dynamiquement dans une boucle
    Par Malau dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 03/05/2006, 16h55
  5. Acesskey dynamique dans un form à plusieurs boutons submit ?
    Par boteha dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/09/2005, 17h54

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