1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| Sub AddExcelCheckBox()
Dim S As Worksheet
Dim R As Range
Dim CBX As Excel.CheckBox
Dim LastLig As Long
Dim i As Long
Dim j As Long
'---
Set S = Sheets("Participants") 'à adapter
'--- Recherche de la dernière ligne ---
LastLig = S.[d65536].End(xlUp).Row
For j = 2 To S.[iv6].End(xlToLeft).Column 'colonnes (de colonne 2 à la dernière)
If IsNumeric(Right(S.Cells(6, j), 4)) Then 'si les 4 derniers caractères forment un nombre (2013, 2014, etc)
For i = 7 To LastLig 'de la ligne 7 à la dernière ligne
Set R = S.Range(S.Cells(i, j), S.Cells(i, j)) 'c'est la cellule cible dont la valeur sera aligné sur la droite
R.HorizontalAlignment = xlRight
'on y crée une CheckBox Excel (Contrôle de formulaire)
Set CBX = ActiveSheet.CheckBoxes.Add( _
Left:=R.Left, Top:=R.Top, Width:=R.Width, Height:=R.Height)
With CBX 'avec la CheckBox
.Caption = "" 'on vide son texte
'---
.LinkedCell = R.Address 'on lui affecte la cellule cible en tant que cellule liée
'---
.Value = True 'pour que la cellule liée affiche l'état de la CheckBox
.Value = False 'on est forcé d'affecter à cette dernière True puis False
End With
Next i
End If
Next j
End Sub
Sub DeleteExcelCheckBox()
Dim S As Worksheet
Dim CBX As Excel.CheckBox
'---
Set S = Sheets("Participants") 'à adapter
For Each CBX In S.CheckBoxes
CBX.Delete
Next CBX
End Sub |
Partager