Modifier le code d'un bouton de commande VBA

Timelinker -  
 Timelinker -
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. Utilisateur anonyme
     
    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. Timelinker
       
      Dsl mais je crains que ton code ne puisse pas m'aider bcp :S
      0
  2. Utilisateur anonyme
     
    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
  3. Timelinker
     
    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
  4. Timelinker
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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
  7. Timelinker
     
    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. Timelinker
       
      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. Utilisateur anonyme
       
      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. Timelinker
       
      Pas de soucis, c'est ma config qui est merdique. En tout cas merci bcp pour ton aide Lupin !
      0