Modifier le code d'un bouton de commande VBA

Fermé
Timelinker - 28 avril 2011 à 11:31
 Timelinker - 11 mai 2011 à 14:47
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 !

A voir également:

6 réponses

Utilisateur anonyme
28 avril 2011 à 15:04
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
Dsl mais je crains que ton code ne puisse pas m'aider bcp :S
0
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
Utilisateur anonyme
6 mai 2011 à 00:45
re:

J'oublias, peut-être que ce site pourrais t'aider aussi :
http://www.cpearson.com/excel/vbe.aspx

Cdt

Lupin
0
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
6 mai 2011 à 19:37
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
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
J'ai enlevé l'obligation de déclarer les variables, mais ça ne marche pas non plus...

Sans compte admin ca semble compromis.
0
Utilisateur anonyme
11 mai 2011 à 13:15
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
Pas de soucis, c'est ma config qui est merdique. En tout cas merci bcp pour ton aide Lupin !
0