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 :

Affecter une macro à un bouton de formulaire créé dynamiquement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut Affecter une macro à un bouton de formulaire créé dynamiquement
    Bonjour,

    J'ai créé un formulaire qui permet à l'utilisateur de rajouter des boutons dans celui-là. La création du nouveau bouton se fait donc de manière dynamique de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim monBouton As Control
    Set monBouton = Me.Controls.Add("Forms.CommandButton.1", "Bouton_" & i , True)
    De là, mon bouton se crée bel et bien, mais je souhaiterai lui affecter une macro. D'après mes recherches je dois utiliser .OnAction = "maMacro" mais lorsque j'écris Bouton_1.OnAction = "MaMacro", cela ne fonctionne pas....
    Toutes les pistes que je trouve portent sur des boutons qui se trouvent dans une feuille et non dans un formulaire du coup ça n'est apparemment pas adapter...

    Merci de votre aide.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    le".onaction" c'est fait pour les control formulaire dans un sheets pas pour un ACTIVX dans un formulaire(userform)

    il te faut classer des control dans un module classe et creer leur evenement

    ton exposé est bien trop mince pour aller plus loin
    il faudrait que tu detaille ton project voir ton code initial
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour votre réponse rapide.
    Voici mon code plus détaillé :
    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
    Private Sub AjoutBouton_Click()
        Dim num_bouton As Integer
        num_bouton = sheets("parametres").Range("A2").Value
        Call AjoutBouton(num_bouton, 40 + (num_bouton - 1) * 20)
    End Sub
     
    Private Function AjoutBouton(ByVal iteration As Integer, ByVal decalage_haut As Integer)
        Dim nouveauBouton As Control
        Set nouveauBouton = Me.Controls.Add("Forms.CommandButton.1", "Bouton_" & iteration, True)
        nouveauBouton.Height = 18
        nouveauBouton.Left = 232
        nouveauBouton.Top = decalage_haut
        nouveauBouton.Width = 18
        nouveauBouton.Caption = "..."
    End Function
    Il faut donc que je crée tout cela à partir d'une classe c'est bien ça ?

    Merci

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par yelem Voir le message
    lorsque j'écris Bouton_1.OnAction = "MaMacro", cela ne fonctionne pas....
    Je ne suis pas spécialiste des UserForm et je peux me tromper mais, à ta place, j'aurais plutôt écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monBouton.OnAction = "MaMacro"
    En supposant que ça vienne se placer à la suite du code que tu présentes.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    @Menhir
    ma propriété ".onaction" n'existe pas pour les activeX (commandbutton,etc...)dans les userforms

    cette propriété est pour les shapes et tout control formulaire dans un sheets accessible par la collections"shapes" et non "OLEObject"

    c'est pour cela que les activX ont leur propre evenement click,change,mouse_down,etc.......
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et entre nous ou est l'utilisté d'un seul bouton dynamique

    ne peut il pas etre tout simplement invisible et visible en fonction d'un evenement ou quoiqu'est-ce

    une classe controls est faite pour gerer un meme evenement de x controls toi tu en a qu'un tu vois le shmilblik
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    En fait le but du programme est de permettre à l'utilisateur d'ajouter des images sur une slide de PPT. Pour cela, il peut paramétrer un formulaire (chemin vers l'image, taille, position, etc...). Le bouton en question sert à ouvrir une fenêtre afin que l'utilisateur choisisse un fichier puis de mettre dans un champ ce chemin absolu vers le fichier.
    L'idée est de lui donner la possibilité d'ajouter autant d'images qu'il le souhaite. Pour cela il clique sur un bouton (Ajouter une image) qui lui génère une nouvelle ligne de paramètres (chemin vers l'image, taille, position, etc...) et donc un nouveau bouton pour la recherche du fichier.
    Au départ, j'avais effectivement créé une dizaine de lignes de paramètres que j'affichais ou non en fonction de la demande de l'utilisateur. Sauf que certains de ces derniers ont besoin de plus d'une dizaine d'images, d'où la nécessité de permettre au programme de générer lui-même les paramètres donc les boutons et de leur attribuer une macro.

    Désolé pour mes explications peut-être pas très claires...

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    ben oui c'est un fait indeniable tes explications ne sont pas tres claires
    quel est le rapport entre le fait que l'on doivent ajouter 1 ou 10 image et le fait d'avoir besoins d'un boutons dynamique
    c'est pas clair tout ca !!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Fichiers attachés Fichiers attachés

  10. #10
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut
    Génial, merci beaucoup !!
    Il ne me reste plus qu'à l'adapter mais c'est exactement ce qu'il me fallait !

    Encore merci pour ton aide.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Naturopathe
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Naturopathe
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut
    Super le code!

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Ravis si ça convient.

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

Discussions similaires

  1. Affecter une macro à un bouton
    Par Cercle dans le forum VBA Word
    Réponses: 7
    Dernier message: 08/12/2010, 08h44
  2. affecter une macro à un bouton
    Par isis1be dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/04/2008, 11h09
  3. affecter une macro à un bouton
    Par jamelie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/02/2008, 17h33
  4. Affecter une macro à un bouton
    Par billy78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/11/2007, 10h58
  5. affecter une macro à un bouton dans une feuille
    Par gu000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/10/2007, 14h04

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