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


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 16
    Points
    16
    Par défaut Affecter une macro à un bouton
    Bonjour,

    Je me retrouve face à un problème. J'essai d'affecter une autre macro à mon bouton de commande à la fin de ma macro.

    Je m'explique :

    Au lancement de l'application, le bouton "Commencer" commande la macro Debut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Debut()
     
        Cells(4, 2).Interior.Color = 65535
     
        ActiveSheet.Shapes.Range(Array("Commencer")).Select
        Selection.Characters.Text = "Suivant"
        Selection.OnAction = "Feuil1.Suite1"
     
    End Sub
    Lorsque je clique sur le bouton de commande, la case se colorie bien en jaune, mais le nom du bouton ne change pas et la macro affecté à ce bouton non plus. De plus excel me met l'erreur 400.
    J'aimerais que lorsque la case soit rempli en jaune, mon bouton change de nom et affecte la macro "Suite1" à ce bouton.

    J'espère avoir été assez clair.

    Merci de votre aide.
    Vincent

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour changer le nom d'un objet Shape, il vous faut déclarer une variable de type Shape et utiliser sa propriété Name. Par ailleurs, votre macro Suite1 doit être placée dans un module standard et pas dans un module d'onglet. Le code ci-dessous fonctionne.

    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
     
    Sub Debut()
     
    Dim ShapeEncours As Shape
     
        With ActiveSheet
             .Cells(4, 2).Interior.Color = 65535
             For Each ShapeEncours In .Shapes
                 If ShapeEncours.Name = "Commencer" Then
                    With ShapeEncours
                         .Name = "Suivant"
                         .OnAction = "Suite1"
                         .Select
                         With Selection
                                .Characters.Text = "Suivant"
                         End With
                    End With
                 End If
             Next ShapeEncours
        End With
     
    End Sub
    Cordialement.

  3. #3
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour à vous deux

    Pour récupérer le Shapecorrespondant au bouton cliqué, pas besoin de parcourir tous les Shapesde la feuille active, tu peux utiliser Application.CallerExemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        Dim shp As Shape
        Set shp = ActiveSheet.Shapes(Application.Caller)
     
        MsgBox shp.Name
    End Sub
    Ce code renvoie le nom du bouton sur lequel tu as cliqué.
    Le code d' Eric pourait donc s'ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Debut()
        ActiveSheet.Cells(4, 2).Interior.Color = 65535
     
        Dim ShapeEncours As Shape: Set ShapeEncours = ActiveSheet.Shapes(Application.Caller)
            With ShapeEncours
                 .Name = "Suivant"
                 .OnAction = "Suite1"
                 .Select
                 With Selection
                        .Characters.Text = "Suivant"
                 End With
            End With
    End Sub
    Ce qui peut être mieux si beaucoup de Shapes sur ta feuille.
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

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