Probleme de Génération de Commandboutons

PoluxDaboss Messages postés 3 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 10 juillet 2007 - 9 juil. 2007 à 20:22
PoluxDaboss Messages postés 3 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 10 juillet 2007 - 10 juil. 2007 à 19:35
Bonjour,
Je vous solicite car j'ai un gros souci. En faite je cherche a ce que un userform est un bouton de création de boutons dans une feuille excel. J'ai chercher pas mal sur le net, mais aparament aucun n'a mon souci.

Voici mon code:

Public Sub crea_bouton(nom)
    Dim ws As Worksheet
    Set ws = Worksheets("Feuil1")
   
    'Création du bouton
    Dim s As Shape
    With ws
       Set s = .Shapes.AddOLEObject(ClassType:="Forms.CommandButton.1")
       s.Name = nom
       .OLEObjects(nom).Object.Caption = nom
    End With
   
    'Création du code
    With ThisWorkbook.VBProject.VBComponents("Feuil1")
        .CodeModule.InsertLines .CodeModule.CountOfLines + 1, "private sub " & nom & "_Click()"
        .CodeModule.InsertLines .CodeModule.CountOfLines + 1, "     msgbox(""ok"")"
        .CodeModule.InsertLines .CodeModule.CountOfLines + 1, "end sub"
    End With
End Sub

En faite si je lance cette procédure a partir d'un bouton sur la feuile, je n'est aucun problème, mais si je le lance a partir d'un bouton dans un useform, excel plante losrque je sors du userform (avec me.hide autant que avec unload me). Si je fait que la création de code, ou que la création de bouton j'ai pas de problème.

Si vous avez la solution ce serais super.
Merci d'avance

Ps: VB extensibility x. je ne sais plus combien est bien activé dans les références.

5 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 juil. 2007 à 23:10
As-tu essayé d'afficher ton UserForm en mode vbModeless ?
C'est tout ce que j'ai trouvé comme idée pour l'instant ...

MPi
0
PoluxDaboss Messages postés 3 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 10 juillet 2007
9 juil. 2007 à 23:21
Merci de ta réponse, mais ça ne solutione pas mon problème.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 juil. 2007 à 08:04
Salut,
Je viens de testé ton code chez moi et il fonctionne.
Pour approfondir, il serait bon de savoir exactement QUAND décharges tu ton userform?
quelle version d'Excel utilises tu (=> et donc de Windows)

j'ai testé sous W2K et Excel d'office 2000 et je n'ai eu aucun problèmes les boutons se créés (certes au meme endroit mais ca marche)

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
10 juil. 2007 à 14:40
bonjour,

    With ws
       Set s = .Shapes.AddOLEObject(ClassType:="Forms.CommandButton.1")
       s.Name = nom
       .OLEObjects(nom).Object.Caption = nom
    End With

pour détruire un objet que tu a créer il faut (je pense) appliquer la fonction

Set s = Nothing
A+
0

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

Posez votre question
PoluxDaboss Messages postés 3 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 10 juillet 2007
10 juil. 2007 à 19:35
Bonjour, et merci pou ces réponses.

J'ai tester sur vista, et sur xp, avec excel 2003.

Le userform je le décharge lors de la fermeture du userform (avec un bouton "annuler" qui fait que unload me), en faite pour tester jai juste fait un bouton qui lance ma procédure (avec un inputbox pour le nom avant) et celui de fermeture. Toi tu ne plante pas meme si tu fait plusieurs créations de boutons puis fermeture du userform apres? 

Sinon si je sors avec les croix, sa a laire de marcher, la croix et unload me ça fait pas la meme chose?

Sinon je vais essayer ce set s = nothing.
0
Rejoignez-nous