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

  • Initiateur de la discussion Initiateur de la discussion TheLio
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
485
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
Retour