Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1411 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

   VBA: Créer un boutton dynamiquement ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA: Créer un boutton dynamiquement ?

n°1815337
focdagosu
Posté le 22-11-2008 à 16:30:34  profilanswer
 

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

mood
Publicité
Posté le 22-11-2008 à 16:30:34  profilanswer
 

n°1816305
SuppotDeSa​Tante
Aka dje69r
Posté le 25-11-2008 à 12:05:25  profilanswer
 

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)
    Sheets(newSheet).Buttons.Add(199.5, 300, 81, 36).Select
    Selection.Name = nomClient
    Selection.OnAction = "test2"
 
End Sub
 
Function test2()
MsgBox "toto"
End Function
 
Sub zozo()
Call titi("feuil1" )
End Sub


 
Cordialement


Message édité par SuppotDeSaTante le 25-11-2008 à 12:18:43

---------------
Soyez malin, louez entre voisins !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

   VBA: Créer un boutton dynamiquement ?

 

Sujets relatifs
Créer un fichier jpg depuis un plot => installer un nouveau module ?derniere semaine du mois ? [VBA Excel] [RESOLU]
logiciel "simple" pour créer une petite applicationFacebook : comment créer application pour noter&faire un classement?
[Résolu]Créer lien vers une autre partition => Alias/Apache/WAMPChercher répertoire en VBA Macro Excel
Quel module pour créer des formulairesComment créer un batch qui correspond à FN+F7
Créer une liste à plusieurs sélection unique sans appuis sur la toucheVBA - C++ - DLL
Plus de sujets relatifs à : VBA: Créer un boutton dynamiquement ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR