XL 2016 [VBA] Boucle sur cases à cocher et N° de ligne est décalée de 2

TheLio

XLDnaute Accro
Bonjour à tous, Bonjour le forum,
Je suis loin d'être un expert en VBA, mais je m'essaie...
- Créer une boucle pour insérer des cases à cocher 🆗
- Faire en sorte que la case soit nommée avec le N° de ligne correspondant 📛
Arriveriez vous à m'orienter et corriger mon bout de code ?

VB:
Sub AjouterCasesACocher()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.ActiveSheet
   
    Dim cb As CheckBox
    Dim rng As Range
    Dim i As Long
    Dim lineNumber As Long
   
    ' Boucle à travers les lignes 6 à 70
    For i = 6 To 70
        lineNumber = i ' Numérotation à partir de 6
       
        ' Définir la plage de cellules correspondante pour chaque ligne
        Set rng = ws.Range("AG" & lineNumber)
       
        ' Ajouter la case à cocher dans la colonne AG de la ligne
        Set cb = ws.CheckBoxes.Add(rng.Left, rng.Top, rng.Width, rng.Height)
       
        ' Renommer la case à cocher avec "ligne" suivi du numéro de ligne
        cb.Name = "CheckBox_ligne" & lineNumber
       
        ' Lier la case à cocher à la cellule dans la colonne E de la ligne
        cb.LinkedCell = ws.Cells(lineNumber, "E").Address
       
        ' Rendre la case à cocher non imprimable
        cb.PrintObject = False
       
        ' Ajuster l'alignement vertical de la case à cocher
        cb.Top = rng.Top + (rng.Height - cb.Height) / 2 + 1
       
        ' Ajuster l'alignement horizontal de la case à cocher
        cb.Left = rng.Left + (rng.Width - cb.Width) / 2
    Next i
End Sub

Dans mon classeur, cela commence à 4
Dans un classeur vide cela commence à 1


Merci d'avance pour vos lumières
@++
Lio
 

vgendron

XLDnaute Barbatruc
Hello

Ne pas confondre le nom du checkbox (ce que tu fais déjà) et le texte qui est affiché à coté du checkbox= Caption

PS: ta variable LineNumber ne sert à rien.. tu pourrais utiliser i directement

VB:
Sub AjouterCasesACocher()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.ActiveSheet
   
    Dim cb As CheckBox
    Dim rng As Range
    Dim i As Long
    Dim lineNumber As Long
   
    ' Boucle à travers les lignes 6 à 70
    For i = 6 To 70
        lineNumber = i ' Numérotation à partir de 6
       
        ' Définir la plage de cellules correspondante pour chaque ligne
        Set rng = ws.Range("AG" & lineNumber)
       
        ' Ajouter la case à cocher dans la colonne AG de la ligne
        Set cb = ws.CheckBoxes.Add(rng.Left, rng.Top, rng.Width, rng.Height)
       
        ' Renommer la case à cocher avec "ligne" suivi du numéro de ligne
        cb.Name = "CheckBox_ligne" & lineNumber
        cb.Caption = "CheckBox_ligne" & lineNumber
        ' Lier la case à cocher à la cellule dans la colonne E de la ligne
        cb.LinkedCell = ws.Cells(lineNumber, "E").Address
       
        ' Rendre la case à cocher non imprimable
        cb.PrintObject = False
       
        ' Ajuster l'alignement vertical de la case à cocher
        cb.Top = rng.Top + (rng.Height - cb.Height) / 2 + 1
       
        ' Ajuster l'alignement horizontal de la case à cocher
        cb.Left = rng.Left + (rng.Width - cb.Width) / 2
    Next i
End Sub
 

Discussions similaires