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 :

affectation dynamique de macros a bouton [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 53
    Par défaut affectation dynamique de macros a bouton
    Bonjour
    j'ai créé des boutons avec le code suivant

    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
    Dim Obj As OLEObject
        Dim laMacro As String
        Dim i As Integer
        Dim n As Long
        n = Sheets("BD").Range("Z2").Value - 1
     
    For i = 0 To n
                            Set Obj = ActiveSheet.OLEObjects.Add("Forms.CommandButton.1")
                            With Obj
                                    .left = 800 'position horizontale
                                    .top = 190 + i * 35 'position verticale
                                    .width = 45 'largeur
                                    .height = 25 'hauteur
                                    .Object.Caption = "VOIR" & i
                                    .Visible = True
                            End With
                            Next i
    End Sub

    je voudrais desormais affecter à ces boutons une macro en fonction de l'indice
    i, je m'explique :

    pour le bouton 1 : on va ecrire la valeur de la cellule A1 dans un textBox
    pour le bouton 2 : on va ecrire la valeur de la cellule A2 dans un textBox
    pour le bouton i : on va ecrire la valeur de la cellule Ai dans un textBox

    etc.............




    Est ce possible

    Merci

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Maintenant que tu as créer les boutons, il te reste à créer le code des boutons.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 53
    Par défaut j'ai essayé mais bon !!
    Re
    Voici mon 1er essai : bilan plantage visual basic (dommage !!)

    ca c'est le code pour créer les boutons (jusqu'ici tt va bien)

    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
    Dim line As Long
    line = Sheets("BD").Range("M2") + 1
    Dim Obj As OLEObject
        Dim i As Integer
    Dim laMacro As String
        Dim x As Integer
       Dim n As Long
    n = Sheets("BD").Range("Z2").Value - 1
    For i = 0 To n
                            Set Obj = ActiveSheet.OLEObjects.Add("Forms.CommandButton.1")
                            With Obj
                                    .left = 800 'position horizontale
                                    .top = 190 + i * 35 'position verticale
                                    .width = 45 'largeur
                                    .height = 25 'hauteur
                                    .Object.Caption = "VOIR"
                                    .name = "VOIR" & i
                                    .Visible = True
                            End With
                            Next i
    et oups ça plante maintenant je pense

    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
     laMacro = "Private Sub CommandButton" & i & "_Click()" & vbCrLf
     
        laMacro = laMacro & "Dim line As Long" & vbCrLf
        laMacro = laMacro & "line = Sheets(""BD"").Range(""X2"")+ 3"
        laMacro = laMacro & "Dim line2 As Long" & vbCrLf
        laMacro = laMacro & "line2 = Sheets(""BD"").Range(""M2"") + 1"
        laMacro = laMacro & "Sheets(""BD"").Range(""N2:W2"").ClearContents" & vbCrLf
        laMacro = laMacro & "Sheets(""BD"").Range(""Q2"").Value = Sheets(""BD"").Range(""C""&line).Value" & vbCrLf
        laMacro = laMacro & "Sheets(""BD"").Range(""A1:K"" & line2).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets(""BD"").Range(""O1:Y2""), CopyToRange:=Sheets(""SELRESULT"").Range(""A3""), Unique:=False" & vbCrLf
        laMacro = laMacro & " UserForm2.Show "
     
     
        laMacro = laMacro & "End Sub"
     
        With ThisWorkbook.VBProject.VBComponents(ActiveSheet.name).CodeModule
           x = .CountOfLines + 1
            .InsertLines x, laMacro
       End With
    End Sub


    de l'aide svp !!!!!!

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    bonjour,

    Voici mon 1er essai : bilan plantage visual basic (dommage !!)
    Peux-tu me dire quel est ton plantage, a première vue ton code a l'air correct.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 53
    Par défaut erreur d'execution '1004'
    voila tout est dans le titre

    erreur d'execution '1004'

    L'accès par programme au projet visual basic n'est pas fiable

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Ok, j'avais un code a te donner mais je ne crois pas que tu en ai besoin,

    Il s'agit juste d'un problème de paramètrage (d'ou l'interêt de préciser l'erreur dans les posts).

    Sur excel va dans outil/macro/sécurité, onglet editeurs approuvés et coche
    "Faire confiance au projet visual basic".

    Tu dis

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 53
    Par défaut nouvelle erreur
    Nouvelle erreur

    erreur d'éxecution '9'



    l'indice n'appartient pas a la sélection

  8. #8
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Sur quelle ligne, pour aider mieux vaut le savoir !

    Aller comme dirait un illustre forumeur, je sors ma boule de cristale, plus sérieusement ça doit être ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.VBProject.VBComponents(ActiveSheet.name).CodeModule
    je suis tombé aussi sur cette erreur en utilisant ton code, je l'ai corrigé (sans trop creuser pour l'instant) en utilisant le codename de la feuille (le code name de la feuille c'est le nom de la feuille, celui qui n'est pas entre parenthèse dans l'explorateur de projet.

    Dans mon exemple j'ai AjoutCode (feuil1) :

    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
    Sub Ajout_Code_Bouton1()
    '------------------------------------------------------------------------
    ' Ajout d'un code pour bouton 1 sur la feuille 1 (codename = AjoutCode)
    '------------------------------------------------------------------------
     
    'Ajout de code du bouton
    Code = Code & "Sub CommandButton1_Click()" & vbLf
    Code = Code & "msgbox" & " " & """Coucou""" & vbLf
    Code = Code & "End Sub" & vbLf
     
    ' Ecriture du code
    Dim xl As Object
    Set xl = ThisWorkbook.VBProject.VBComponents(Ajoutcode.CodeName).CodeModule
     
    With xl
       DerLiCode = .CountOfLines
       .InsertLines DerLiCode + 1, Code
    End With
     
    End Sub

  9. #9
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Après test tu peux remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xl = ThisWorkbook.VBProject.VBComponents(Worksheets("feuil1").CodeName).CodeModule
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xl = ThisWorkbook.VBProject.VBComponents(Worksheets("feuil1").CodeName).CodeModule
    Sinon en reprenant ton code ceci devrait marcher aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xl = ThisWorkbook.VBProject.VBComponents(activesheet.CodeName).CodeModule

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

Discussions similaires

  1. [XL-2007] Affectation de macro existante à bouton dynamique
    Par richard_sraing dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/09/2012, 13h05
  2. Affecter une macro à un bouton
    Par Cercle dans le forum VBA Word
    Réponses: 7
    Dernier message: 08/12/2010, 08h44
  3. [XL-2003] affectation d'une macro à un bouton
    Par kidone dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/12/2009, 17h35
  4. affectation d'une macro à un bouton
    Par Djawida dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 02/07/2009, 16h26
  5. Affectation de macros à des boutons créés dynamiquement
    Par JM_Cholet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/07/2007, 14h09

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