Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recopier une case à cocher

5 réponses
Avatar
Bernard Cordier
Bonjour,
Dans une feuille, j'ai inséré un contrôle Case à cocher en B3 avec $C$3
comme cellule liée vrai/faux.
Y a-t-il moyen de le recopier vers le bas de façon rapide, c'est à dire
sans copier/coller ? Il s'agit en effet d'une centaine de lignes.
Merci de m'aider.

--
Bernard Cordier
http://bernard.cordier.pagesperso-orange.fr/

5 réponses

Avatar
Charabeuh
Bonjour,

Ce code (Excel2010) place une case à cocher dans B3:B20 et y lie les
cellules C3:C20. Peut-être pouvez-vous vous en inspirer ?

Sub Boxes()
Dim I, cbLeft, cbTop, cbHeight, cbWidth
cbHeight = 18: cbWidth = 48

With ActiveSheet
For I = 3 To 20
.Cells(I, 2).Select
cbTop = ActiveCell.Top + ActiveCell.Height / 2 - cbHeight / 2
cbLeft = ActiveCell.Left + ActiveCell.Width / 2 - cbWidth / 2
ActiveSheet.CheckBoxes.Add(cbLeft, cbTop, _
cbWidth, cbHeight).Select
With Selection
.Value = xlOn
.LinkedCell = ActiveCell.Offset(0, 1).Address
.Text = "Option " & (I - 2)
End With
Next I
End With

End Sub



Bernard Cordier a couché sur son écran :
Bonjour,
Dans une feuille, j'ai inséré un contrôle Case à cocher en B3 avec $C$3 comme
cellule liée vrai/faux.
Y a-t-il moyen de le recopier vers le bas de façon rapide, c'est à dire sans
copier/coller ? Il s'agit en effet d'une centaine de lignes.
Merci de m'aider.
Avatar
isabelle
bonjour Bernard,

une possibilité est de tous les créer par macro,

Sub Creer_CheckBox()
Dim cb As Shape, t As Integer
With Worksheets(1)
For i = 1 To 100
t = Range("B" & i).Top
'AddFormControl(Type, Left, Top, Width,
Height)
Set cb = .Shapes.AddFormControl(xlCheckBox, 3, t, 50, 5)
With cb
.OLEFormat.Object.Characters.Text = "CB" & i
.ControlFormat.LinkedCell = Range("C" & i).Address
End With
Next
End With
End Sub

Sub Supprimer_CheckBox()
For Each sh In ActiveSheet.Shapes
sh.Delete
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-19 07:53, Bernard Cordier a écrit :
Bonjour,
Dans une feuille, j'ai inséré un contrôle Case à cocher en B3 avec
$C$3 comme cellule liée vrai/faux.
Y a-t-il moyen de le recopier vers le bas de façon rapide, c'est à
dire sans copier/coller ? Il s'agit en effet d'une centaine de lignes.
Merci de m'aider.

Avatar
isabelle
une petite précision pour ne supprimer que les CheckBox dont le nom est CB*

Sub Supprimer_CheckBox()
For Each sh In ActiveSheet.Shapes
With sh
If Left(.OLEFormat.Object.Characters.Text, 2) = "CB" Then sh.Delete
End With
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-20 00:42, isabelle a écrit :
bonjour Bernard,

une possibilité est de tous les créer par macro,

Sub Creer_CheckBox()
Dim cb As Shape, t As Integer
With Worksheets(1)
For i = 1 To 100
t = Range("B" & i).Top
'AddFormControl(Type, Left, Top, Width,
Height)
Set cb = .Shapes.AddFormControl(xlCheckBox, 3, t, 50, 5)
With cb
.OLEFormat.Object.Characters.Text = "CB" & i
.ControlFormat.LinkedCell = Range("C" & i).Address
End With
Next
End With
End Sub

Sub Supprimer_CheckBox()
For Each sh In ActiveSheet.Shapes
sh.Delete
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-19 07:53, Bernard Cordier a écrit :
Bonjour,
Dans une feuille, j'ai inséré un contrôle Case à cocher en B3 avec
$C$3 comme cellule liée vrai/faux.
Y a-t-il moyen de le recopier vers le bas de façon rapide, c'est à
dire sans copier/coller ? Il s'agit en effet d'une centaine de lignes.
Merci de m'aider.

Avatar
Bernard Cordier
C'est parfait. Grand merci.
Ne pratiquant pas le VBA, je voudrais quelques précisions.
Que faut-il modifier :
pour mettre les cases dans une autre colonne que A ?
pour que leur nom n'apparaissent pas ?
Pour le reste, je devrais être autonome. Merci.

Bernard

isabelle a écrit :
bonjour Bernard,

une possibilité est de tous les créer par macro,

Sub Creer_CheckBox()
Dim cb As Shape, t As Integer
With Worksheets(1)
For i = 1 To 100
t = Range("B" & i).Top
'AddFormControl(Type, Left, Top, Width,
Height)
Set cb = .Shapes.AddFormControl(xlCheckBox, 3, t, 50, 5)
With cb
.OLEFormat.Object.Characters.Text = "CB" & i
.ControlFormat.LinkedCell = Range("C" & i).Address
End With
Next
End With
End Sub

Sub Supprimer_CheckBox()
For Each sh In ActiveSheet.Shapes
sh.Delete
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-19 07:53, Bernard Cordier a écrit :
Bonjour,
Dans une feuille, j'ai inséré un contrôle Case à cocher en B3 avec $C$3
comme cellule liée vrai/faux.
Y a-t-il moyen de le recopier vers le bas de façon rapide, c'est à dire
sans copier/coller ? Il s'agit en effet d'une centaine de lignes.
Merci de m'aider.





--
Bernard Cordier
http://bernard.cordier.pagesperso-orange.fr/
Avatar
isabelle
bonjour Bernard,

voilà,

Sub Creer_CheckBox()
Dim cb As Shape, t As Integer
With ActiveSheet
For i = 1 To 100 'Choix des lignes
t = Range("B" & i).Top ' choix de la colonne
'AddFormControl(Type, Left, Top, Width, Height)
Set cb = .Shapes.AddFormControl(xlCheckBox, 3, t, 50, 5)
With cb
.OLEFormat.Object.Characters.Text = "" 'texte de la case
.ControlFormat.LinkedCell = Range("C" & i).Address ' colonne lier
End With
Next
End With
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-20 04:49, Bernard Cordier a écrit :
C'est parfait. Grand merci.
Ne pratiquant pas le VBA, je voudrais quelques précisions.
Que faut-il modifier :
pour mettre les cases dans une autre colonne que A ?
pour que leur nom n'apparaissent pas ?
Pour le reste, je devrais être autonome. Merci.

Bernard

isabelle a écrit :
bonjour Bernard,



une possibilité est de tous les créer par macro,



Sub Creer_CheckBox()
Dim cb As Shape, t As Integer
With Worksheets(1)
For i = 1 To 100
t = Range("B" & i).Top
'AddFormControl(Type, Left, Top,
Width, Height)
Set cb = .Shapes.AddFormControl(xlCheckBox, 3, t, 50, 5)
With cb
.OLEFormat.Object.Characters.Text = "CB" & i
.ControlFormat.LinkedCell = Range("C" & i).Address
End With
Next
End With
End Sub



Sub Supprimer_CheckBox()
For Each sh In ActiveSheet.Shapes
sh.Delete
Next
End Sub



isabelle
------------------------------------------------------------------



Le 2011-03-19 07:53, Bernard Cordier a écrit :
Bonjour,
Dans une feuille, j'ai inséré un contrôle Case à cocher en B3 avec
$C$3 comme cellule liée vrai/faux.
Y a-t-il moyen de le recopier vers le bas de façon rapide, c'est à
dire sans copier/coller ? Il s'agit en effet d'une centaine de lignes.
Merci de m'aider.