Comment supprimer un bouton dans un userform en vba ou autre

fenec

XLDnaute Impliqué
Bonjour le forum,
Besoin de votre aide car je ne parviens pas à supprimer un commandbutton dans mon userform.
Je vais essayer d’être clair dans ma problématique.
Dans mon userform j’ai un bouton nommer "Créer Tournante" qui me copie mon fichier dans le but de ne pas modifier le fichier source.
Ce que je voudrais c’est que ce bouton ne soit pas copié lors de la copie vu que la tournante sera créée.
J’ai bien essayé de le rendre invisible ou de le déplacer mais ca ne marche pas car à l’ouverture du fichier copié il est toujours présent.
Suis à votre écoute pour résoudre mon problème.
Cordialement,
Philippe.
 

Fichiers joints

Roland_M

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

bonsoir,

placer cette ligne de code dans un module et l'userform fermé !
voir à mettre ton code actuel dans une macro qui devra être exécuté après fermeture de l'userf !

ThisWorkbook.VBProject.VBComponents("Menu").Designer.Controls.Remove "Créer_Tournante"

EDIT: fais attention car l'affichage ci-dessus met un espace inexistant à .Designer.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonsoir fenec,

Pour que le fichier ci-joint fonctionne il faut avoir coché l'option :

- sur Excel 2003 et versions antérieures Faire confiance au projet Visual Basic (menu Outils-Macro-Sécurité-Editeurs approuvés).

- sur Excel 2007 et versions suivantes Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).

Je vous laisse découvrir les macros.

Il n'est pas possible de supprimer le bouton mais on peut le masquer.

Et le masquage n'est possible qu'après fermeture de l'UserForm (noter la variable flag qui évite la fermeture du fichier).

Edit : bonsoir Roland_M, je ne t'avais pas vu.

Bonne fin de soirée.
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonjour fenec, Roland_M, le forum,

Fichier (2) si l'on veut que le bouton n'apparaisse plus dans la feuille de l'UserForm :

Code:
Sub SupprimerBouton()
'ThisWorkbook.VBProject.VBComponents("Menu").Designer.Controls("Créer_Tournante").Visible = False
ThisWorkbook.VBProject.VBComponents("Menu").Designer.Controls("Créer_Tournante").Left = -100
Menu.Show
End Sub
J'ai aussi ajouté dans la macro du bouton :

Code:
Workbooks(NOM).Close False 'si le fichier est ouvert
Bonne journée.
 

Fichiers joints

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonjour Roland_M, Job75, le forum,

Viens de tester vos solutions c’est tout à fait ce que je voulais.
La deuxième est intéressante mais pour aller encore plus loin en plus de ne plus faire apparaitre le bouton serait-il possible de supprimer les macros qui de ce fait ne servent plus.
Je sais que ce point n’était pas demander au départ mais votre deuxième solution m’y à fait penser.

Pour supprimer le module j’ai testé ceci :
Code:
Sub SupprimerBouton()
'ThisWorkbook.VBProject.VBComponents("Menu").Designer.Controls("Créer_Tournante").Visible = False
ThisWorkbook.VBProject.VBComponents("Menu").Designer.Controls("Créer_Tournante").Left = -100
Menu.Show
With ThisWorkbook.VBProject
     .VBComponents.Remove .VBComponents("module1")
 End With
End Sub
Mais pour la macro du bouton la je bloque.
Cordialement,
Philippe.
 

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Re,

Cette autre solution du fichier (3) a nettement ma préférence.

Elle consiste à ne pas mettre de bouton "Créer Tournante" dans l'USF mais à le créer par VBA.

Dans l'USF "Menu" il suffit de compléter avec ce code :

Code:
Dim bouton(0) As New Classe1
'---
Private Sub Userform_initialize()
'---
'---création du bouton---
If IsError([PasDeBouton]) Then
  Set bouton(0).bouton = Controls.Add("Forms.CommandButton.1")
  With bouton(0).bouton
    .Name = "Créer_Tournante"
    .Caption = "Créer Tournante"
    .Height = 24
    .Left = 222
    .Top = 6
    .Width = 70
    .BackColor = &H8000000F
  End With
End If
Et dans un nouveau module de classe "Classe 1" :

Code:
Public WithEvents bouton As MSForms.CommandButton

Private Sub bouton_Click() 'Copie le classeur
Dim NOM, lechemin As String
lechemin = ActiveWorkbook.Path & "\"
NOM = "Pointage Congés " & Sheets(1).[B5]
Application.DisplayAlerts = False
On Error Resume Next
Workbooks(NOM).Close False 'si le fichier est ouvert
Menu.Controls.Remove "Créer_Tournante"
ThisWorkbook.Names.Add "PasDeBouton", 1, Visible:=False 'nom défini masqué
ThisWorkbook.SaveAs lechemin & NOM & ".xls"
End Sub
A mon avis il est sans intérêt de supprimer les codes devenus inutiles dans le fichier créé.

Le nom défini "PasDeBouton" (masqué) empêche toute exécution.

A+
 

Fichiers joints

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Re,

Maintenant si vous tenez à supprimer les lignes de codes voyez ce fichier (4).

Edit : j'ai mis le maximum de choses dans le module de classe, on ne touche pas à Module1.

A+
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Re,

La suppression de la ligne 7 dans ThisWorkbook laisse entendre qu'on n'a plus besoin de l'USF Menu.

Il est donc supprimé avec ce fichier (4 bis).

A+
 

Fichiers joints

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonjour Job75, le forum,
je regarde toutes ces solutions et vous tiens au courant dès que possible.

Cordialement,

A+
 

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonsoir Job75, le forum,

Comme vous la troisième solution à ma préférence car le visuel de l’application est nulle.
J’entends par la que l’on ne voit pas l’userform se fermer et revenir.
De plus j’ai appris quelque chose car je ne savais pas que l’on pouvait créer des boutons ainsi.
A propos est ce cela que l’on appelle : "un bouton dynamique "?

En ce qui concerne le fichier 4 il est dommage que le code ne rende pas le même visuel que le fichier 3.
Rentrant du travail, je verrais demain si j’arrive à modifier celui-ci en y intégrant les lignes de codes.

Pour ce qui est de la suppression de la ligne 7 c’est un essai que j’avais fait et que j’ai oublié d’enlever dans le fichier joint poste un, pardonnez moi cet oubli et le temps passé pour le fichier 4 bis, car l’userform " Menu "ne doit pas être supprimer.


Cordialement,
Philippe.
 

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonsoir le forum,
Je reviens vers vous et surtout vers Job75 pour l'aide qu'il m'a apporté en créant un bouton dans mon userform en vba (#post 6) car j'essaye en vain depuis une semaine à rajouter deux autres boutons de la même façon mais je n'y parviens pas.
Est ce tout simplement pas possible ou mon niveau plus que médiocre en vba est plus que réel.
Encore une question:
Avec ce genre de bouton faut il forcément passé par un module de classe
Cordialement,
Philippe.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonjour fenec, le forum,

L'adaptation était pourtant simple, voyez le fichier joint créé à partir du fichier (3).

Concernant le module de classe "Classe1" il est indispensable.

Non pas pour créer les boutons mais pour leur affecter des macros.

Par exemple si l'on met dans l'USF "Menu" la macro Private Sub Créer_Tournante_Click() le clic sur le bouton créé ne la déclenchera pas.

Bonne journée.
 

Fichiers joints

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Re,

Pour le fun - et uniquement pour le fun - voici une solution très bourrin pour se passer du module de classe.

Dans l'USF Menu :

Code:
Private Sub Userform_Initialize()
'---
'---création des 3 boutons---
'---
Application.OnTime 1, "AttenteClick"
'---
End Sub
Dans Module1 :

Code:
Sub AttenteClick()
Dim ac$, NOM$, lechemin$
Do
  DoEvents
  ac = Menu.ActiveControl.Name
  If ac = "Créer_Tournante" Then
    lechemin = ActiveWorkbook.Path & "\"
    NOM = "Pointage Congés " & Sheets(1).[B5]
    Application.DisplayAlerts = False
    On Error Resume Next
    Workbooks(NOM).Close False 'si le fichier est ouvert
    Menu.Controls.Remove "Créer_Tournante"
    Menu.Controls.Remove "Bonjour"
    Menu.Controls.Remove "Philippe"
    ThisWorkbook.Names.Add "PasDeBouton", 1, Visible:=False 'nom défini masqué
    ThisWorkbook.SaveAs lechemin & NOM
    Exit Sub
  ElseIf ac = "Bonjour" Or ac = "Philippe" Then
    MsgBox ac
    Menu.Accueil.SetFocus 'met le focus ailleurs
  End If
Loop
End Sub
Fichier joint.

Edit : après avoir cliqué sur le bouton "Historique", quand on cliquait sur "Annuler", le focus passait sur "Créer_Tournante"...

Pour l'éviter il a suffi d'ajouter Accueil.SetFocus à la fin de la macro du bouton "Annuler".

A+
 

Fichiers joints

Dernière édition:

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonsoir le forum, Job75

Déjà dans un premier temps merci pour avoir répondu à ma demande.

Rentrant du travail, je regarde après un petit rafraichissement et vous tiens au courant dès que possible.

Cordialement,
Philippe
 

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonjour le forum, Job75

Suis parvenu à mettre en application dans mon fichier final c'est nickel.
La seule chose que je n'ai pas réussi à faire c'est d'intégrer un faceid dans l'un des boutons ainsi crées.

Pourriez vous m'éclairer sur ce point si pas trop abuser de votre temps.

Cordialement,
Philippe.
 

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre

Bonjour fenec,

Il faut utiliser les éléments de la classe qui vient d'être créée :

Code:
'---
    Cmb.FaceId = 17 'à adapter
    bouton(1).bouton.Picture = Cmb.Picture
    bouton(1).bouton.PicturePosition = fmPicturePositionLeftCenter
    Cmb.FaceId = 255 'à adapter
    bouton(2).bouton.Picture = Cmb.Picture
    bouton(2).bouton.PicturePosition = fmPicturePositionLeftCenter
Fichier (2).

A+
 

Fichiers joints

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre

Re,
Cest parfait.

Un grand merci à vous pour m'avoir fait découvrir cette façon de faire.

Bonne soirée,
Cordialement,
Philippe.
 

job75

XLDnaute Barbatruc
Re : Comment supprimer un bouton dans un userform en vba ou autre [ Résolu ]

Bonjour fenec, le forum,

La macro précédente beuguait quand on rouvrait le fichier créé, il faut utiliser :

Code:
'---
    If IsError([PasDeBouton]) Then
      Cmb.FaceId = 17 'à adapter
      bouton(1).bouton.Picture = Cmb.Picture
      bouton(1).bouton.PicturePosition = fmPicturePositionLeftCenter
      Cmb.FaceId = 255 'à adapter
      bouton(2).bouton.Picture = Cmb.Picture
      bouton(2).bouton.PicturePosition = fmPicturePositionLeftCenter
    End If
Vous aviez peut-être complété de vous-même.

Fichier (3).

Bonne journée.
 

Fichiers joints

fenec

XLDnaute Impliqué
Re : Comment supprimer un bouton dans un userform en vba ou autre [ Résolu ]

Bonjour Job75, le forum,

Pardonnez la réponse tardive viens de voir votre message.
Vous remercie pour cette précision vais rajouter cette modification bien que je n'avais rencontré ou remarqué aucun soucis

Bonne journée.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas