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?
    0
    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
      0
  2. As tu regardé la methode remove ?
    0
    1. 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
      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
        
        
        0
        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
          0
          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
            0
            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
              0
              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
                0