VBA: Créer un boutton dynamiquement ? - VB/VBA/VBS - Programmation
Marsh Posté le 25-11-2008 à 12:05:25
Bonjour
Tu entres quoi dans ton parametres newSheet ? Une chaine ? Genre feuil1 ?
Si c'est le cas essaie ca :
Sheets(newSheet).Buttons.Add(199.5, 300, 81, 36).Select
Tu ne déclares pas que ta chaine newSheet est une feuille donc le Buttons.add doit merder.
Tu peux aussi définir ton parametre newSheet comme etant une feuille justement :
Public Sub CreateButtonTest2(newSheet As Sheets, nomClient) et là methode add doit fonctionner
Ensuite nul part dans ton exemple tu nous mets la fonction 'test2' justement. Si tu definis le OnAction du bouton avec un nom de fonction elle doit forcement exister dans le classeur... Ou alors il faut lui faire reference si elle est dans un autre classeur (ouvert)
Chez moi ca marche ca si je lance 'zozo' ensuite je click sur mon bouton et j'ai bien mon msgbox :
Citation : Sub titi(newSheet) |
Cordialement
Marsh Posté le 22-11-2008 à 16:30:34
Bonjour,
J'ai un problème qui doit certainement être tout simple, mais même après avoir épluché tous les codes sources que j'ai pu trouvé, je n'ai pas réussi à le résoudre.
Je veux simple créer un bouton, pour ensuite lui associer une fonction pré-existante. Le problème est que je veux créer ce bouton dans une feuille excel que je viens de créer dynamiquement (elle même dans un workbook que je viens de créer dynamiquement). Si je veux le créer dans ma feuille interface (celle qui contient le code, ou plus exactement les boutons qui lance les fonctions contenue dans des modules), pas de problème, le code suivant fonctionne:
Public Sub CreateButtonTest1(nomClient)
ActiveSheet.Buttons.Add(199.5, 300, 81, 36).Select
Selection.Name = nomClient
Selection.OnAction = "test2"
End Sub
Par contre, quand j'essaie de passer en argument mon objet WorkSheet, ca ne fonctionne pas:
(newSheet est du type Worksheet, créé à partir d'un nouveau WorkBook
et nomClient est de type string).
Public Sub CreateButtonTest2(newSheet, nomClient)
newSheet.Buttons.Add(199.5, 300, 81, 36).Select
Selection.Name = nomClient
Selection.OnAction = "test2"
End Sub
L'erreur est: "438"
Propriété ou méthode non géré par cet objet
et le débuggeur bug à la ligne Selection.OnAction = "test2"
A noter que le bouton est bien créé la ou je veux (dans mon newSheet), mais inutilisable car pas de lien vers une fonction.
Sur un autre forum, quelqu'un m'a suggéré que c'était probablement un problème de visibilité de mes fonctions dans la nouvelle feuille du nouveau classeur, mais je n'ai pas réussi à résoudre le problème.
Si quelqu'un a une idée d'ou peut venir le problème, je lui serai vraiment reconnaissant !
Une autre solution serait de changer le ActiveSheet, mais je n'ai pas réussi (pourtant ca doit être possible et facile).
Merci d'avance,
Maxence