Supprimer plusieurs commandbuttons

Résolu
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. salut,
    pourquoi les effacer, et non pas les rendre invisibles?
    1. 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
  2. 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
    1. 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
      
      
      1. 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
        1. 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
          1. 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
            1. 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