Je suis nouveau ici (et débutant dans VBA). J'ai essayé de modifier ce code pour ne cocher que les cellules de Range ("B21: B40") qui ne sont pas vides.Excel code VBA qui définit la case à cocher lorsque la cellule derrière n'est pas vide
Le code n'est pas prêt. Je ne suis pas sûr de savoir comment construire deux pour chaque boucle de travail pararell que l'on va vérifier le contenu dans Range (« B21: B25 ») et suivant dans la gamme (« A21: A25 ») établira des cases à cocher
Sub ActiveCheckBox()
Dim setRange As Range, cel As Range
Dim checkRange As Range, cel1 As Range
Dim wks As Worksheet
Dim cb As Checkbox
Set wks = Sheets("InterFace")
Set setRange = wks.Range("A21:A25")
Set checkRange = wks.Range("B21:B25")
For Each cel1 In checkRange
If cel1 <> "" Then
For Each setRange In checkRange
Set cb = cel.Worksheet.CheckBoxes.Add(cel.Left + cel.Width/2 - 8.25, _
cel.Top + cel.Height/2 - 8.25, 0, 0) ' 8.25 is cb.Height/2
With cb
.Text = vbNullString ' to clear Caption
.LinkedCell = cel.Address(0, 0) ' Example A1 instead of $A$1
.Name = "cb" & cb.LinkedCell ' optional
End With
Next
End If
Next
setRange.NumberFormat = ";;;" ' optional to hide the cell values
End Sub
Pour construire que j'ai utilisé le code de ce sujet Script to Insert a Checkbox into every cell and assign it to that cell in Excel S'il vous plaît laissez-moi savoir ce que je fais mal.
Quel type de case est-elle? via Formcontrol, ou à partir d'ActiveX? – BruceWayne
Vous avez 'Pour chaque * cel1 *' et plus tard vous avez '* cel * .left' sans le 1. Vous n'avez pas besoin de 2 pour les boucles car il vous suffit de parcourir les cellules une seule fois. Si vous passez par la colonne * checkRange * B, vous pouvez vérifier que la cellule de la colonne A est vide en utilisant 'cel.offest (0, -1)', par exemple. 'si cel.offset (0, -1) <>" "Then' et placez une case à cocher dans la cellule en utilisant * set cb = cel.worksheet ...... * – Gordon