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 :

Ajout dynamique de plus de 1 bouton


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut Ajout dynamique de plus de 1 bouton
    Bonjour à tous,
    Je vous soumet un problème sur lequel je me casse les dents depuis 2 jours.
    Comment inserer dynamiquement plus de 1 bouton et bien sur le "sub" qui va bien avec.

    Un bouton et un module : pas de problème cela fonctionne très bien.
    Mais dès lors que le numéro du "CommandButton" est différent de 1 cela ne fonctionne plus et je ne suis pas parvenu à ajouter un 2ème sub.

    Exemple de code qui fonctionne très bien (tiré des FAQ du site) s'il n'y aqu'un seul sub et qui génére une erreur fatal d'excel si l'on veut ajouter un 2ème module.

    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
    Sub AjoutCommandButton_Feuille()
        Dim Ws As Worksheet
        Dim Obj As OLEObject
        Dim laMacro As String
        Dim x As Integer
     
        'Ajout feuille
        Set Ws = Sheets.Add
     
     
        'Ajout CommandButton dans la feuille
        Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
        With Obj
            .Left = 50 'position horizontale
            .Top = 50 'position verticale
            .Width = 140 'largeur
            .Height = 30 'hauteur
            .Object.BackColor = RGB(235, 235, 200) 'Couleur de fond
            .Object.Caption = "Supprimer données feuille"
        End With
     
        'Paramètres pour la création de la macro:
        '(suppression contenu cellules)
        laMacro = "Sub CommandButton1_Click()" & vbCrLf
        laMacro = laMacro & "Cells.Clear" & vbCrLf
        laMacro = laMacro & "End Sub"
     
        With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
            x = .CountOfLines + 1
            .InsertLines x, laMacro
        End With
     
        Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
        With Obj
            .Left = 50 'position horizontale
            .Top = 350 'position verticale
            .Width = 140 'largeur
            .Height = 30 'hauteur
            .Object.BackColor = RGB(235, 235, 200) 'Couleur de fond
            .Object.Caption = "Ajouter données feuille"
        End With
     
        'Paramètres pour la création de la macro:
        '(suppression contenu cellules)
        laMacro = "Sub CommandButton2_Click()" & vbCrLf
        laMacro = laMacro & "Cells.Clear" & vbCrLf
        laMacro = laMacro & "End Sub"
     
        With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
            x = .CountOfLines + 1
            .InsertLines x, laMacro
        End With
    End Sub
    Merci à vous tous de m'indiquer des pistes de recherches.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut faroukvazaha et le forum
    je ne sais pas concevoir du code par une macro, n'en ayant jamais eu besoin.
    Par contre tu dois pouvoir le faire avec une macro unique et en mettant le nom de la feuille en variable.
    Mais comme je ne comprends pas ce que tu veux faire...
    A+

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir


    tu peux essayer cette syntaxe :


    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
    Sub AjoutCommandButton_Feuille()
        Dim Ws As Worksheet
        Dim Obj As OLEObject
        Dim laMacro As String
        Dim x As Integer, i As Integer
     
        'Ajout feuille
        Set Ws = Sheets.Add
     
        For i = 1 To 5
            'Ajout CommandButton dans la feuille
            Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
            With Obj
                .Left = 50 'position horizontale
                .Top = (40 * i) + 30 'position verticale
                .Width = 140 'largeur
                .Height = 30 'hauteur
                .Object.BackColor = RGB(235, 235, 200) 'Couleur de fond
                .Object.Caption = "Bouton " & i
            End With
        Next i
     
     
        For i = 1 To 5
            laMacro = "Sub CommandButton" & i & "_Click()" & vbCrLf
            laMacro = laMacro & "MsgBox " & Chr(34) & "Bouton " _
                & i & Chr(34) & vbCrLf
            laMacro = laMacro & "End Sub"
     
            With ThisWorkbook.VBProject.VBComponents(Ws.CodeName).CodeModule
                x = .CountOfLines + 1
                .InsertLines x, laMacro
            End With
        Next i
     
    End Sub


    bonne soirée
    michel

  4. #4
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut
    Bonsoir,
    Avec tous mes remerciements SilkyRoad.
    Par contre je n'arrive pas à comprendre pourquoi il y a une erreur "systeme excel" dans l'exemple que j'ai proposé et pourquoi cela fonctionne dans celui que tu me communiques.
    Dans mon exemple CommandButton2_click() génère cette erreur
    Dans ton exemple CommandButton" & i & "_Click()" ne génère pas d'erreur, alors que c'est à priori la même chose si i=2

    Merci de m'apporte quelques éclaircissements.

  5. #5
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut Ajouter plus de 1 bouton en dynamique
    Bonsoir

    Après avoir bien relu ton exemple je viens de comprendre :

    Il faut d'abord réaliser les boutons puis les sub, ou l'inverse.
    Mais ne pas imbriquer bouton puis sub puis bouton, etc...

    Merci et A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/10/2013, 21h15
  2. Ajouter dynamiquement un bouton radio à un gridview
    Par mimosa803 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 15/07/2009, 12h07
  3. Ajout dynamique de bouton de défilement
    Par ludogoal dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 27/05/2008, 14h45
  4. Ajouter dynamiquement un bouton
    Par toure32 dans le forum Delphi
    Réponses: 2
    Dernier message: 17/04/2007, 00h40
  5. Réponses: 1
    Dernier message: 14/08/2006, 10h41

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