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

8 réponses

  1. boomer
     
    salut,
    pourquoi les effacer, et non pas les rendre invisibles?
    0
    1. 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
  2. boomer
     
    As tu regardé la methode remove ?
    0
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. 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
  9. 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