Modifier le code d'un bouton de commande VBA

Bonjour,

Je voulais savoir s'il est possible de modifier du code avec une macro ?

Je m'explique :
Je souhaite que lorsque l'on clique sur un bouton de commande (bouton1), un autre bouton de commande (bouton2) se crée dans une cellule définie (jusque là ça va).
Mais en plus je sais déjà ce que je veux mettre comme code dans ce bouton2, j'aimerai donc qu'il se génère automatiquement lorsque l'on clique sur bouton1.

Merci pour votre aide, prévenez moi si c'est pas clair !

6 réponses

  1. re,

    Je n'ai pas l'instruction [Option Explicit] en début de code par défaut.

    C'est peut-être parce que j'utilise Excel 2003 ?

    Merci Lupin.
    0
    1. J'ai enlevé l'obligation de déclarer les variables, mais ça ne marche pas non plus...

      Sans compte admin ca semble compromis.
      0
    2. re:

      En effet, le tout semble voué à l'échec. Je ne vois pas comment
      faire fonctionner le code sans avoir la référence.

      Désolé, mais il faudra sans doute trouver une autre solution.

      Cdt

      Lupin
      0
    3. Pas de soucis, c'est ma config qui est merdique. En tout cas merci bcp pour ton aide Lupin !
      0
  2. re:

    Effectivement, c'est du à la référence.

    Sans la référence, tu peux essayer le code sans avoir
    l'instruction [ Option Explicit ] en début de code.

    En théorie, cela devrait fonctionner.

    Cdt

    Lupin
    0
    1. Ah ok, c'est effectivement bien un problème de référence. J'ai essayé de changer ça, mais quand je vais dans Outils/Référence, j'ai un message "Erreur d'accès à la base de registration".

      C'est grave docteur?

      Je crois que c'est foutu pour ajouter des lignes de code automatiquement :S
      0
      1. Merci Lupin !

        J'ai bien suivi ton exemple mais j'ai toujours l'erreur 1004 qui s'affiche, on dirait qu'il ne connait pas VBproject. Est ce que ce serait dû au besoin d'ajouter cette référence [ Microsoft Visual Basic x.y Extensibility ] ??? Je ne sais pas ce que c'est, mais si c'est qqchose à installer, ça risque d'être compliqué, c'est mon ordi de travail et je n'ai pas les droits d'admin.

        Au cas où c'est pas ça l'erreur, voici mon code, peut être tu trouveras ce qui cloche :

        Private Sub CommandButton9_Click()
        
        Dim nom As String
        Dim Code As String
        
        ligne = InputBox("On which line did you add the new supplier ?", "Add supplier")
        
            ActiveSheet.Shapes("CommandButton1").Select
            Selection.Copy
            Cells(ligne, 4).Select
            ActiveSheet.Paste
            nom = Selection.Name
            Code = " Sub " + nom + "_Click()" & vbCrLf & vbCrLf & _
            nom + ".TopLeftCell.Select" & vbCrLf & vbCrLf & _
            "Call Codefct" & vbCrLf
            
             With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
                NextLine = .CountOfLines + 1
                .InsertLines NextLine, Code
            End With
        
        End Sub
        


        Tout va bien jusqu'au With où ça bug !
        En tout cas merci beaucoup pour ton aide!
        0
        1. re:

          Voici l'exemple du bouquin dont je me suis inspiré :

          Sub AddSheetAndButton() 
              Dim NewSheet As Worksheet 
              Dim NewButton As OLEObject 
               
          '   Add the sheet 
              Set NewSheet = Sheets.Add 
               
          '   Add a CommandButton 
              Set NewButton = NewSheet.OLEObjects.Add _ 
                ("Forms.CommandButton.1") 
              With NewButton 
                  .Left = 4 
                  .Top = 4 
                  .Width = 100 
                  .Height = 24 
                  .Object.Caption = "Return to Sheet1" 
              End With 
               
          '   Add the event handler code 
              Code = "Sub CommandButton1_Click()" & vbCrLf 
              Code = Code & "    On Error Resume Next" & vbCrLf 
              Code = Code & "    Sheets(""Sheet1"").Activate" & vbCrLf 
              Code = Code & "    If Err <> 0 Then" & vbCrLf 
              Code = Code & "      MsgBox ""Cannot activate Sheet1.""" & vbCrLf 
              Code = Code & "    End If" & vbCrLf 
              Code = Code & "End Sub" 
               
              With ThisWorkbook.VBProject. _ 
                VBComponents(NewSheet.Name).CodeModule 
                  NextLine = .CountOfLines + 1 
                  .InsertLines NextLine, Code 
              End With 
          End Sub 
          ' 
          


          Il parait plus simple que ça ne l'ai :-)

          n.b. Il faut ajouter la référence : [ Microsoft Visual Basic x.y Extensibility ]

          Cdt

          Lupin
          0
        2. Bonjour,

          Tu trouveras ici : https://www.excel-downloads.com/resources/categories/utilitaires.18/

          un fichier Excel de mon cru [ VizioXLA ] qui te fourniras
          des exemples pour manipuler du code VBA.

          Je ne prétends pas que celui-ci soit de haut niveau, mais
          il fournit quand même des exemples pour manipuler plusieurs
          objets faisant partie d'Excel.

          Cdt

          Lupin
          0
          1. Dsl mais je crains que ton code ne puisse pas m'aider bcp :S
            0