Réinitialiser le numéro des checkbox

Bonjour à tous,

J'ai bricolé sur un fichier excel afin d'implanter des case à cocher (formulaire), j'ai utilisé cette macro afin de remplir mon tableau.

Sub ListeCase()

 Dim CB As Excel.CheckBox
 Dim R As Range
 Dim i&

    NbreLigne = Cells.Find("*", [A1], , , , xlPrevious).Row

 For i& = 2 To NbreLigne
   Set R = ActiveSheet.Range("A" & i& & "")
   Set CB = ActiveSheet.CheckBoxes.Add(R.Left, R.Top, R.Width, R.Height)
   CB.Text = ""
 Next i&
 End Sub

Le problème c'est que comme j'ai fait la manip plusieurs fois mtn je me retrouve avec des valeurs incohérentes avec mon fichier, par exemple "case à cocher 285" alors que c'est sensé être la première.

Est-il possible de réinitialiser, ou a défaut d'avoir une macro pour les renommer ? (mon tableau fait 250 lignes)

Merci d'avance

Bonjour,

A tester :

Option Explicit

Sub ListeCase()

 Dim CB As Excel.CheckBox
 Dim R As Range
 Dim i As Integer, NbreLigne As Integer, NbChb As Integer

    With ActiveSheet

         If .CheckBoxes.Count > 0 Then
            .CheckBoxes.Delete
         End If

         NbreLigne = .Cells.Find("*", [A1], , , , xlPrevious).Row
         NbChb = 1
         For i = 2 To NbreLigne
             Set R = .Range("A" & i)
             Set CB = .CheckBoxes.Add(R.Left, R.Top, R.Width, R.Height)
             With CB
                 .Name = "CheckBox" & Format(NbChb, "000")
                 .Text = ""
                 NbChb = NbChb + 1
             End With
             Set R = Nothing: Set CB = Nothing
        Next i
    End With

 End Sub

bonjour,

Utilisez cette macro :

Sub galopin()
Dim o
For Each o In ActiveSheet.Shapes
If Left(o.Name, 5) = "Check" Then o.Delete
Next
End Sub

Merci pour vos réponses, mais

Sub galopin()
Dim o
For Each o In ActiveSheet.Shapes
If Left(o.Name, 5) = "Check" Then o.Delete
Next
End Sub

Ce code efface effectivement mes cases, mais quand je remet ma macro qui génère mes cases je me retrouve avec le même problème "case à cocher 485" sur ma première case alors que j'aimerais "case à cocher 1".

Et pour ce code

Sub ListeCase()

 Dim CB As Excel.CheckBox
 Dim R As Range
 Dim i As Integer, NbreLigne As Integer, NbChb As Integer

    With ActiveSheet

         If .CheckBoxes.Count > 0 Then
            .CheckBoxes.Delete
         End If

         NbreLigne = .Cells.Find("*", [A1], , , , xlPrevious).Row
         NbChb = 1
         For i = 2 To NbreLigne
             Set R = .Range("A" & i)
             Set CB = .CheckBoxes.Add(R.Left, R.Top, R.Width, R.Height)
             With CB
                 .Name = "CheckBox" & Format(NbChb, "000")
                 .Text = ""
                 NbChb = NbChb + 1
             End With
             Set R = Nothing: Set CB = Nothing
        Next i
    End With

 End Sub

Il fonctionne super bien merci beaucoup, j'espère juste que je ne vais pas galérer à cause de ces lignes là

             With CB
                 .Name = "CheckBox" & Format(NbChb, "000")
                 .Text = ""
                 NbChb = NbChb + 1
             End With

Ces cases sont là pour effectuer un tri pour ensuite appliquer une autre macro. Je vais essayer. Merci bcp :)

Une autre question, j'ai voulu créer des boutons pour tout sélectionner/déselectionner, mais j'ai des erreurs. Je pensais faire qqch dans ce goût là :

Sub deselectionner_tout_Cliquer()

 Dim CB As Excel.CheckBox
 Dim R As Range
 Dim i As Integer
 Dim NbreLigne As Integer
 Dim MaFeuille As Worksheet

     'Init de la feuille active
    Set MaFeuille = Sheets("Pilotage")

    'Sélection de la page active
    Sheets("Pilotage").Select

    NbreLigne = Cells.Find("*", [A1], , , , xlPrevious).Row

    For i = 2 To NbreLigne
        Set R = Range("A" & i)
        CB.Value = False
    Next

 End Sub

Mais j'ai une erreur '91' Variable ou objet de bloc With non définie. :(

C'est normal l'objet CB n'est pas instancié (avec un Set CB = ....)

Que cherchez vous à faire avec ce code ?

Je cherche à désélectionner toutes les cases avec la macro utilisée plus haut

Sub Test_DeselectionnerCheckbox()
    DeselectionnerCheckbox Sheets("Pilotage"), True
End Sub

Sub DeselectionnerCheckbox(ByVal ShCheckBox As Worksheet, ByVal Etat As Boolean)

    With ShCheckBox
         If .CheckBoxes.Count > 0 Then
            If Etat = True Then
               .CheckBoxes.Value = False
            Else
               .CheckBoxes.Value = True
            End If
        End If
   End With

 End Sub

Ca fonctionne au top, merci beaucoup. J'avais pas du tout penser à faire comme ça :)

Rechercher des sujets similaires à "reinitialiser numero checkbox"