Nouvelle feuille avec des boutons?

Résolu
BIOoOAG123 - 23 avril 2013 à 11:46
 BIOoOAG123 - 24 avril 2013 à 10:27
Bonjour à tous. :)


Petite question, je ne sais pas si cela est possible, mais je souhaiterais que lorsque l'utilisateur créait une nouvelle feuille (par l'onglet classique d'Excel), un bouton vient s'intégrer automatiquement à cette nouvelle feuille.

Est-ce possible?

33 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
23 avril 2013 à 20:29
Bonjour,

J'imagine que si "BoutonTest" existe déjà la macro ne pourra pas le créer encore une fois, d'où l'erreur.

Il te faudrait le supprimer auparavant
Activesheet.Shapes("Bouton Test").delete


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 avril 2013 à 20:35
Bonjour, MPi.
Même pas, car pas créé dans un module bas, mais sur la feuille ajoutée.
Non. Son problème est très vraisemblablement dans ses options de sécurité.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
23 avril 2013 à 21:03
Bonjour,

Je n'ai pas tout lu mais quand tu joues avec la bibliothèque Extensibility tu dois cocher la case "Faire confiance au projet VisualBasic.
0
J'ai déjà tout de ok niveau sécurité, j'ai mis,
Activer toute les marco (normal.)
Et aussi coché Accés approuvé au modèle d'objet de projet VBA.
(sur 2010)

Il y t-il une autre option à cocher?
0

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

Posez votre question
Bonjour a tous,
tu as cocher les cases faire confiance au projet Visual Basic et faire confiance à tous les modèles et compléments installés ?


Fabien
0
coché ^^


Fabien
0
Bon j'ai créé un nouveau classeur et ça fonctionne; vraiment bizarre, je vois que ça comme solution toute façon... J'espère que ça va pas me le refaire :(
0
faire confiance au projet Visual Basic et
faire confiance à tous les modèles et compléments installés
ne sont pas dispo sur excel 2010 ou du moins impossible de les trouver, les seules options de sécurité sont celles que j'ai coché.
0
si c'est pas le même nom : dans Fichiers/Option/Centre de Gestion de la confidentialité/Paramètres du centre de gestion de confidentialité/Paramètres des macros, cocher la case « Accès approuvé au modèle d'objet du projet VBA ».


Fabien
0
ah pardon, tu l'as déjà fait oups j'avais zappé un de tes messages... j'en avais de trop ce matin en arrivant lol


Fabien
0
hallelujah!! J'ai trouvé d'ou ça vient!


En fait ça vient du fait que je change le nom de la feuille, avec le nom de base donc feuilleX ça fonctionne mais vu que je change le nom de la feuille pour la date du jour (via un Sh.Name = DatePart("d", Date)... etc. avant je le faisait à la main, voila pourquoi je ne l'avais pas remarqué) ça ne marche plus. Comment je fais?


Voici le code :


Sub workbook_newsheet(ByVal Sh As Object)
Dim Obj As Object
Dim Code As String

Sh.Select

    On Error Resume Next
    '*********** Mise en forme ************
    Rows(1).RowHeight = 42
    Rows(2).RowHeight = 35
    
    '********** Nom de la feuille *********
    Sh.Name = DatePart("d", Date) & "." & DatePart("m", Date) & "." & DatePart("yyyy", Date)
    
    '*********** crée le bouton ***********
    Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
    Link:=False, DisplayAsIcon:=False, Left:=5, Top:=5, Width:=150, Height:=35)
    Obj.Name = "BoutonTest"
    '********** texte du bouton ***********
    ActiveSheet.OLEObjects(1).Object.Caption = "Calcul Marge"
    
    '********* Le texte de la macro *******
    Code = "Sub BoutonTest_Click()" & vbCrLf
    Code = Code & "Call Module1.MAJMacro" & vbCrLf
    Code = Code & "End Sub"
    
    '* Ajoute la macro en fin de module feuille *
    With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
    .insertlines .CountOfLines + 1, Code
    End With
End Sub
0
Super ça fonctionne merci beaucoup! :) Merci à tous de m'avoir aidé!
0
Pour ceux que ça intéresse ce code plante parfois (il ne copie pas le code (Sub x call ... end sub) dans la nouvelle feuille), pour y remédier il faut remplacer ActiveSheet.Name par ActiveSheet.CodeName

With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With


Voili Voilou J'espere que ça pourra vous sera utile!
0
Rejoignez-nous