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 :

Modifier le code d'un bouton


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
    Étudiant
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut Modifier le code d'un bouton
    Bonjour,

    J'ai une macro liée à un bouton qui me génère une nouvelle feuille dans mon classeur.
    Dans cette nouvelle feuille, je crée un bouton pour lequel je voudrai insérer un bout de code.

    Ce que j'ai réussi à faire :
    - Générer la nouvelle feuille
    - Créer mon bouton
    - Modifier le nom du bouton et le texte associé

    Ce que je n'ai pas réussi à faire :
    - Modifier le code VBA du bouton

    Voici mon bout de code pour créer le bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    newSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
                        , DisplayAsIcon:=False, Left:=1, Top:=1, Width:=72, Height:=24). _
                        Select
     
                    X = ActiveSheet.OLEObjects.Count 'compter le nombre de boutons existants dans la feuille
     
                    'option nommer l'objet
                    ActiveSheet.OLEObjects(X).name = "GenerateXML"
                    'texte sur le bouton
                    ActiveSheet.OLEObjects(X).Object.Caption = "Generate XML"
    Voici le bout de code pour modifier le code du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    Code = "Sub GenerateXML_Click()" & vbCrLf
                    Code = Code & "  ModuleOngletsImportation.GenerateXML2" & vbCrLf
                    Code = Code & "End Sub"
     
                    With ActiveWorkbook
                        MsgBox ("OK")
                        .VBProject.VBComponents(ActiveSheet.name).CodeModule.AddFromString (Code)
                        'NextLine = .CountOfLines + 1
                        '.insertlines NextLine, Code
                    End With
    Je n'arrive pas à faire fonctionner cette seconde partie.

    Y aurait-il quelqu'un pour m'aider ?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour insérer une macro par le code, jète un oeil ici. Si ça ne te suffit pas, tu dis
    A+

    Adapté à ton code, ça devrait donner quelque chose conne ça :
    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
    Option Explicit
    
    Sub EcrireDuCodeNimporteOu()
    Dim i, LeCode(1 To 3)
    Dim NomClasseur As String, NomFeuil As String
    Dim Wb As Workbook
    NomClasseur = ActiveWorkbook.Name
    
        NomFeuil = ActiveSheet.Name 'A ADAPTER
                    LeCode(1) = "Sub GenerateXML_Click()"
                    LeCode(2) = "  ModuleOngletsImportation.GenerateXML2"
                    LeCode(3) = "End Sub"
    
        Set Wb = Workbooks(NomClasseur)
        With Wb.VBProject.VBComponents(NomFeuil).CodeModule
            For i = .CountOfLines To 1 Step -1
                .DeleteLines i
                DoEvents
            Next
            For i = 1 To UBound(LeCode)
                .InsertLines i, LeCode(i)
            Next
        End With
    Bonne journée

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    Merci pour la rapidité de la réponse.

    Voici mon compte arrangé :
    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
        If isSheetExist(catName) = False Then
          'l'onglet n'existe pas on le crée
          Set newSheet = Sheets.Add(, Worksheets(Worksheets.Count))
          newSheet.name = catName
     
                    'Création du bouton
                    newSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
                        , DisplayAsIcon:=False, Left:=1, Top:=1, Width:=72, Height:=24). _
                        Select
     
                    X = ActiveSheet.OLEObjects.Count 'compter le nombre de boutons existants dans la feuille
     
                    'option nommer l'objet
                    ActiveSheet.OLEObjects(X).name = "GenerateXML"
                    'texte sur le bouton
                    ActiveSheet.OLEObjects(X).Object.Caption = "Generate XML"
     
                    'Céation du bout de code
                    NomClasseur = ActiveWorkbook.name
                    NomFeuil = ActiveSheet.name
                    LeCode(1) = "Sub GenerateXML_Click()"
                    LeCode(2) = "  ModuleOngletsImportation.GenerateXML2"
                    LeCode(3) = "End Sub"
                    With ActiveWorkbook.VBProject.VBComponents(NomFeuil).CodeModule
                        For j = .CountOfLines To 1 Step -1
                            .DeleteLines j
                            DoEvents
                        Next
                        For j = 1 To UBound(LeCode)
                            .InsertLines j, LeCode(j)
                        Next
                    End With
                    'Workbooks(NomClasseur).Worksheets(2).Select
     
     
          ActiveWindow.Zoom = 75
        End If
    Par contre j'ai une erreur à l'exécution de cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            With ActiveWorkbook.VBProject.VBComponents(NomFeuil).CodeModule
    Et voici l'erreur que j'ai :

    Erreur d'exécution '9'
    L'indice n'appartien pas à la sélection
    L'indice, je suppose que c'est "NomFeuil" mais il semble correct quand je l'affiche dans une MsgBox

    Une idée sur la résolution de cette erreur ?

    Merci d'avance.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Essaie en instanciant le classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set Wb = Workbooks(NomClasseur)
        With Wb.VBProject.VBComponents(NomFeuil).CodeModule
    et n'oublie pas le "end With"

Discussions similaires

  1. [XL-97] Code vba pour bouton modifier
    Par yosra_jemai dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/03/2013, 07h53
  2. Modifier le Code du Bouton X"Fermer"
    Par nadjibnet dans le forum C#
    Réponses: 2
    Dernier message: 19/12/2010, 23h58
  3. modifier le code d'un bouton sous flash CS4?
    Par Zantetsu dans le forum Flash
    Réponses: 0
    Dernier message: 20/10/2009, 11h55
  4. [INPUT TYPE=SUBMIT] Comment modifier la largeur d'1 bouton
    Par Kylen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 12h27
  5. [debutant] comment appliquer le code d'un bouton
    Par philippejuju dans le forum MFC
    Réponses: 3
    Dernier message: 20/01/2004, 10h56

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