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 :

Associer une macro à un bouton ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut Associer une macro à un bouton ?
    Bonjour,

    Je n'arrive pas à faire fonctionner le code suivant :

    http://excel.developpez.com/faq/?pag...tCommandButton

    Et par conséquent, le mien non plus :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Private Sub Workbook_Open()
        On Error Resume Next
     
        ' On créé un onglet par véhicule s'il n'existe pas déjà
        Colonne = 3
        Ligne = 3
        While Not IsEmpty(Worksheets("DATA").Cells(Ligne, Colonne))
            If Not IsWorksheet(Worksheets("DATA").Cells(Ligne, Colonne)) Then
                Worksheets("PLANNING").Copy After:=Worksheets(Worksheets.Count)
                Worksheets(Worksheets.Count).Name = Worksheets("DATA").Cells(Ligne, Colonne)
            End If
            Ligne = Ligne + 1
        Wend
     
        ' On efface tous les boutons
        Worksheets("MENU").DrawingObjects.Delete
     
        ' On créé dynamiquement un bouton par véhicule
        Colonne = 3
        Ligne = 3
        CompteurGauche = 0
        CompteurHaut = 0
        While Not IsEmpty(Worksheets("DATA").Cells(Ligne, Colonne))
            Set Obj = Worksheets("MENU").OLEObjects.Add("Forms.CommandButton.1")
            With Obj
                .Left = 50 + (CompteurGauche * .Width * 3)
                .Top = 50 + (CompteurHaut * .Height * 3)
                .Width = 150
                .Height = 40
                .Object.Caption = Worksheets("DATA").Cells(Ligne, Colonne - 1) + vbCrLf + Worksheets("DATA").Cells(Ligne, Colonne)
                NbJour = DateDiff("d", Now, Worksheets("DATA").Cells(Ligne, Colonne + 1))
                If NbJour <= Worksheets("DATA").Cells(3, 6) Then
                    .Object.BackColor = RGB(255, 122, 122)
                End If
            End With
     
            laMacro = "Sub CommandButton" + CStr(Ligne - 2) + "_Click()" & vbCrLf
            laMacro = laMacro & "Worksheets(" + """" + Worksheets("DATA").Cells(Ligne, Colonne) + """" + ").Activate" & vbCrLf
            laMacro = laMacro & "End Sub"
            'MsgBox laMacro
            With ThisWorkbook.VBProject.VBComponents("MENU").CodeModule
                x = .CountOfLines + 1
                .InsertLines x, laMacro
            End With
     
            CompteurGauche = CompteurGauche + 1
            If CompteurGauche > 4 Then
                CompteurGauche = 0
                CompteurHaut = CompteurHaut + 1
            End If
            Ligne = Ligne + 1
        Wend
     
        ' On se positionne sur l'onglet "MENU"
        Worksheets("MENU").Activate
    End Sub
    Mes boutons n'ont aucun code associé...

    J'utilise Excel 2010.

    Merci pour votre aide !
    ZiP

  2. #2
    Candidat au Club
    Homme Profil pro
    débutant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : débutant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut
    Bonjour,

    Je ne comprends pas ta question, Est-ce le code en question qui plante ? ou bien le fait que tu ne puisses pas l'associer à un bouton ?
    Le code que tu as posté est dans une procédure evenementielle (ouverture classeur), il semble donc logique que tu ne puisses pas y associer un bouton.
    Cdt
    Jim

  3. #3
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonjour,

    Le code ne plante pas mais aucune macro n'est créé dans le code de mon fichier et par conséquent il n'est pas associé au bouton.

    Comment dois-je faire pour que ça marche ?

    Merci,
    ZiP

  4. #4
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonsoir,

    J'ai mis le bout de code qui ajoute la macro au bouton dans une procédure à part et j'ai une erreur sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ThisWorkbook.VBProject.VBComponents("MENU").CodeModule
    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
    Private Sub Test()
        Ligne = 3
        Colonne = 3
        While Not IsEmpty(Worksheets("DATA").Cells(Ligne, Colonne))
            laMacro = "Sub CommandButton" + CStr(Ligne - 2) + "_Click()" & vbCrLf
            laMacro = laMacro & "Cells.Clear" + vbCrLf '"Worksheets(" + """" + Worksheets("DATA").Cells(Ligne, Colonne) + """" + ").Activate" & vbCrLf
            laMacro = laMacro & "End Sub"
            'MsgBox laMacro
            'MsgBox ActiveSheet.Name
            With ThisWorkbook.VBProject.VBComponents("MENU").CodeModule
                x = .CountOfLines + 1
                .InsertLines x, laMacro
            End With
            Ligne = Ligne + 1
        Wend
    End Sub
    J'ai l'erreur suivante :


    Pourtant, mon onglet "MENU" existe...

    Une idée ?

    Merci,
    ZiP

  5. #5
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour zip, bluesman72 et le forum

    tu n'explique pas clairement ce que doit faire la macro que tu veux mettre derrière un bouton,
    ce bouton est-il sur la feuille où un usf?

    le code que tu a trouvé et mis dans ton dernier post consiste a créer une feuille et ajouter un bouton en même temps
    pour ouvrir un usf a partir d'un bouton sur feuille Pascal

  6. #6
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonjour,

    Le bouton est créé dynamiquement sur une feuille nommée "MENU", je veux lui ajouter une macro de manière dynamique également.

    Le but de la macro est de changer d'onglet lorsque l'on appuie sur le bouton.

    Pour tester, j'ai mis un bout de code qui efface les cellules de la feuille.

    Cordialement,
    ZiP

Discussions similaires

  1. [XL-2003] création d'un TCD en cliquant sur un bouton associé à une macro
    Par saou85 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/11/2010, 01h00
  2. Est il possible de lier une macro à un bouton ?
    Par rimbaut dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/08/2007, 08h17
  3. [HTML] associer une image à un bouton
    Par info_plus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 15
    Dernier message: 19/07/2007, 14h59
  4. [VBA Excel] Associer N macros à N boutons suite à un événement
    Par Vorillyan dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/11/2006, 08h46
  5. [VBA-E] Associer une macro à une cellule
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/04/2006, 13h50

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