Supprimer plusieurs commandbuttons

Résolu
duduleray -  
 duduleray -
Bonjour a tous, forum



Comment svp effacer par vba en une seule fois 50 commandbuttons dans un userform

Merci a vous de votre temps bonne fin d'après midi

Cdlt Ray
A voir également:

8 réponses

boomer
 
salut,
pourquoi les effacer, et non pas les rendre invisibles?
0
duduleray
 
Salut boomer

en fait c'est une palette de bouton colorisé j'en efface une et une autre viendra prendre la place avec des boutons mais plus petits , c'est pour ca qu'il me faut les effacer
c'est un code vba qui place les boutons

Merci a toi bon w-end et bonne soirée


Raymond
0
boomer
 
As tu regardé la methode remove ?
0
boomer
 
Je pense que dans ton cas, ce serait la solution, etant donné que tu ajoutes les boutons au fur et à mesure !

Je te mets un exemple :

Private Sub CommandButton1_Click()
    Dim Obj As Control
    
    Set Obj = Me.Controls.Add("forms.CommandButton.1")
    With Obj
        .Name = "monbouton"
        .Left = 140
        .Top = 30
        .Width = 50
        .Height = 20
    End With
    
    End Sub

Private Sub CommandButton2_Click()
    Me.Controls.Remove "monbouton"
End Sub

j'espere que ça va t'aider,
bon courage et bonne soirée
0
duduleray
 
Bonjour boomer,

Merci pour ta réponse et pour le petit code, c'est sympa, j'ai fait des essais mais ca n'a pas l'air de vouloir marcher du moins avec moi LOL

je te joint le code qui affiche les CommandBouttons par vba

Donc a savoir qu'il me faut effacer UNIQUEMENT les buttons créer par VBA
dans l'userForm ou dans la Frame

Mais tout autre Labels etc etc ne doivent pas etre effacer bien sur.

Je te remercie pour ton temps et on savoir

Bon Dimanche

Raymond

Private Sub CommandButton1_Click()
    Dim t, i, nbr, combien, depTop, depLeft, tablo(100) As Integer: Dim bouton
   
    On Error Resume Next
Application.ScreenUpdating = False
    
    combien = Application.InputBox("Combien de bouton ?", "Nombre de bouton", , Type:=1)
    
    If combien = 0 Then Exit Sub
    
    depTop = 20
    depLeft = 20
    
    For nbr = 1 To combien
        
        'Faut inclure un Frame si tu le veux dans un Frame
        'Set bouton = Frame1.Add("forms.CommandButton.1")
        
        Set bouton = Controls.Add("Forms.CommandButton.1")
        With bouton
            For i = 0 To 100
                For t = 5 To 500 Step 5
                    tablo(i) = t
                    If tablo(i) = nbr - 1 Then
                        depTop = depTop + 20
                        depLeft = depLeft - 135 '(5 x 27 = 135)
                    End If
                    .Left = depLeft + ((nbr - 1) * 27)
                    .Top = depTop
                    .Width = 27
                    .Height = 18
                    .Caption = "Btn" & nbr
                Next t
                Exit For
           Next i
        End With
    Next nbr
Application.ScreenUpdating = True
End Sub
'************
Private Sub UserForm_Click()

End Sub

0

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

Posez votre question
boomer
 
salut duduleray,

A quel moment tu veux qu'ils s'effacent :
Par l'intermediaire d'un autre bouton, ou à l'initialisation de la userform ....?

exemple de code pour les boutons nommés Commandbutton1 dans la userform et dans la frame :
A utiliser avec un autre bouton nommé commandbutton2

Private Sub CommandButton2_Click()
    Dim Ctrl As Control
For Each Ctrl In Me.Controls
If Ctrl.Name = "Commandbutton1 " Then
Me.Controls.Remove "Commandbutton1 "
End If
Next Ctrl

End Sub


Normalement il devrait boucler sur tous les boutons que tu as créé et que tu as nommé Commandbutton1 par l'intermédiaire de ton code vba.

attention il va également effacer ton bouton qui te permet d'ajouter tous les autres boutons!! sauf si tu le renommes bien sur...

J'espère pouvoir t'aider d'avantage

bon courage
0
boomer
 
Re,

Petite rectification pour que ton code fonctionne , autant pour moi !

Private Sub CommandButton1_Click()
    Dim t, i, nbr, combien, depTop, depLeft, tablo(100) As Integer: Dim bouton As Control ' -------> définir la variable
   
    On Error Resume Next
Application.ScreenUpdating = False
    
    combien = Application.InputBox("Combien de bouton ?", "Nombre de bouton", , Type:=1)
    
    If combien = 0 Then Exit Sub
    
    depTop = 20
    depLeft = 20
    
    For nbr = 1 To combien
        
        'Faut inclure un Frame si tu le veux dans un Frame
        'Set bouton = Frame1.Add("forms.CommandButton.1")
        
        Set bouton = Controls.Add("Forms.CommandButton.1")
        With bouton
            For i = 0 To 100
                For t = 5 To 500 Step 5
                    tablo(i) = t
                    If tablo(i) = nbr - 1 Then
                        depTop = depTop + 20
                        depLeft = depLeft - 135 '(5 x 27 = 135)
                    End If
                    .Left = depLeft + ((nbr - 1) * 27)
                    .Top = depTop
                    .Width = 27
                    .Height = 18
                    .Caption = "Btn" & nbr
                    .Name = "Monbouton" '----------------> ici renommé le bonton
                Next t
                Exit For
           Next i
        End With
    Next nbr
Application.ScreenUpdating = True
End Sub



Et Le mien par la même occasion:

Private Sub CommandButton2_Click()
    Dim Ctrl As Control
   
For Each Ctrl In Me.Controls
If Ctrl.Name = "Monbouton" Then
Me.Controls.Remove "Monbouton"
End If
Next Ctrl
End Sub


Je pense que cette fois c'est la bonne ........!

Boomer
0
duduleray
 
Salut boomer


Merci pour les modifs, je vais essayer ca (entre deux j'ai du monde a midi)

J'ai un userform ou il y aura un certain nombre de commandbutton qui seront vides

juste colorisés

et dans cette meme userform un certain nombre également de labels d'autres commandbuttons scrollbar

Donc je souhaite seulement effacer que les boutons qui seront créer par vba

Donc il me faudrai une commande par sub pour effacer uniquement les boutons

rien d'autres sur l'userform doit etre effacer bien sur

Pas d'effacement a l'ouverture du fichier

Merci beaucoup pour l'interet que tu porte a m'aider
0
duduleray
 
Salut boomer

Merci pour le petit code, Bon j'ai essayer et adapter ton fichier au mien ça m'a l'air de marcher mon bazar LOL

Affaire a suivre pour moi

Encore merci et je te souhaite une bonne journée

Cordialement Raymond
0