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 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
    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. 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 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. 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. 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. 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