Microsoft 365 Code pour Excel pour cocher/décocher les cases d'une même colonne

nmbs

XLDnaute Nouveau
Bonjour,

J'aimerai pouvoir cocher une case et que celle-ci coche automatiquement toutes les cases de la colonne dessous mais pas celles de toute la feuille, seulement de la colonne sur Excel!

En gros j'aimerai créer une case à cocher/décocher par colonne Est-ce possible? Pourriez-vous me donner un code qui pourrait faire cela?

Je ne m'y connait pas vraiment mais je sais comment copier les codes et les appliquer.

Merci beaucoup !!
 

Staple1600

XLDnaute Barbatruc
Re

Ah bah, c'est pas si vieux
 

Staple1600

XLDnaute Barbatruc
Re

Je plussoie aux propos précédents néanmoins puisque je range mes tiroirs
Dans cet exemple, les CheckBoxes (issues de la BO Formulaire) sont en colonne 5
(Test OK sur mon PC)
VB:
Sub Cocher_TOUT()
'coche les  CheckBox (=> BO Formulaire )
Application.ScreenUpdating = False
Cochez True
End Sub
Sub Décocher_TOUT()
'décoche les  CheckBox (=> BO Formulaire )
Application.ScreenUpdating = False
Cochez False
End Sub

Private Sub Cochez(statut As Boolean)
Dim chk As CheckBox
With ActiveSheet
For Each chk In ActiveSheet.CheckBoxes
chk.Value = chk.TopLeftCell.Column = 5 = statut
Next chk
End With
End Sub
Avec des CheckBox (ActiveX) sauf erreur de ma part, pas de propriété TopLeftCell
 

Staple1600

XLDnaute Barbatruc
Re

Dans la second tiroir de mes archives, cette version qui fonctionnera quelque soit la colonne.
NB: Affecter cette macro à la 1ère CheckBox en haut de la colonne où sont les autres CheckBoxes à cocher
VB:
Sub Cochez_CHK_Selon_Colonne()
Dim chk As CheckBox
For Each chk In ActiveSheet.CheckBoxes
If chk.TopLeftCell.Column = _
        ActiveSheet.CheckBoxes(Application.Caller).TopLeftCell.Column Then chk.Value = _
        ActiveSheet.CheckBoxes(Application.Caller).Value
Next chk
End Sub
(Test OK sur mon PC)
NB: ne fonctionne toujours qu'avec les CheckBoxes "formulaires"
 

job75

XLDnaute Barbatruc
Avec des CheckBoxes ActiveX placez cette macro dans le code de la feuille :
VB:
Private Sub CheckBox1_Change() 'nom à adapter pour chaque colonne, 1ère CheckBox de la colonne
Dim v As Boolean, col%, o As OLEObject
v = CheckBox1 'nom à adapter
col = CheckBox1.TopLeftCell.Column 'nom à adapter
For Each o In OLEObjects
    If TypeName(o.Object) = "CheckBox" Then If o.TopLeftCell.Column = col Then o.Object = v
Next
End Sub
Il faut une macro du même genre pour chaque colonne concernée.

S'il y en a beaucoup on peut utiliser un module de classe.
 

Staple1600

XLDnaute Barbatruc
Bonjour job75

mea culpa
J'avais testé mon code précédent avec
c.Object.TopLeftCell
(qui produisait une erreur)
Le code précédent adapté pour ActiveX (celui du message#6)
VB:
Sub Cocher_TOUT()
'coche les CheckBox (ActiveX)
Application.ScreenUpdating = False
Cochez True
End Sub
Sub Décocher_TOUT()
'décoche les CheckBox (ActiveX)
Application.ScreenUpdating = False
Cochez False
End Sub

Private Sub Cochez(statut As Boolean)
Dim c As Object
With ActiveSheet
    For Each c In .OLEObjects
    If TypeName(c.Object) = "CheckBox" Then
    If c.TopLeftCell.Column = 3 Then
    c.Object.Value = statut
    End If
    End If
    Next c
End With
End Sub
 

Discussions similaires

Réponses
2
Affichages
290
Réponses
5
Affichages
532

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50