Lancement d'une fonction sur la cellule liée d'une case à cocher
Bonjour à tous ! Je suis nouveau sur le forum et je me lance dans vba sur le développement d'une application pour mon stage.
L'appli fait plein de trucs et est assez complexe, mais l'objet ici, c'est les checkbox:
J'aimerais que lorsque je clique sur une checkbox, que j'ai créée à l'aide d'une boucle qui active la macro qui suit...
Code:
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
| Sub Inserer_Cases_A_Cocher_Liees(Zoneboutons As Range)
Dim ChkBx As CheckBox
For Each rngCel In Zoneboutons
With rngCel.MergeArea.Cells
If .Resize(1, 1).Address = rngCel.Address Then
'Pour ne pas afficher la valeur de la cellule liée, enlevez l'apostrophe en début de ligne suivante :
.NumberFormat = ";;;"
Set ChkBx = ActiveSheet.CheckBoxes.Add(.Left, .Top, .Width, .Height)
With ChkBx
'valeur par défaut :
.Value = xlOff 'pourrait être True ou False
'cellule liée
.LinkedCell = rngCel.MergeArea.Cells.Address
'Texte de remplacement
.Characters.Text = "Exclure"
'texte
'.Text = "Toto" ' ou : .Caption = "Toto"
'bordure :
With .Border
'Style de ligne
'.LineStyle = xlLineStyleNone 'ou xlContinuous 'ou xlDashDot ou xlDashDotDot ou xlDot
'couleur
'.ColorIndex = 3 '3 = rouge
'épaisseur du trait
'.Weight = 4
End With
'accessibles aussi les propriétés .Locked, .Name, .Enabled etc...
End With
End If
End With
Next rngCel
End Sub |
... le code affecte cette fonction au bouton, qui s'active à chaque fois que le bouton est cliqué avec le linkedcell comme argument :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub CocherPourExclureLesValeurs(Location As Range)
Worksheets("Template paramétrique").Location.Activate
If ActiveCell.Value = True Then
ActiveCell.Offset(0, -2).Cut
ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)
ActiveCell.Offset(0, -1).Cut
ActiveCell.Offset(0, 2).PasteSpecial (xlPasteValues)
ElseIf ActiveCell.Value = False Then
ActiveCell.Offset(0, 1).Cut
ActiveCell.Offset(0, -2).PasteSpecial (xlPasteValues)
ActiveCell.Offset(0, 2).Cut
ActiveCell.Offset(0, -1).PasteSpecial (xlPasteValues)
End If
End Sub |
Pour plus de clareté : les checkboxes sont situés au bout de chaque ligne des données utilisées pour afficher un nuage de points abscisse et ordonnée). Cocher le case sur une ligne doit avoir pour effet de sortir les données de la zone prise en compte pour l'affichage. La décocher fait le chemin inverse.
Le truc c'est que je ne suis meme pas sûr que ce soit possible ; il ne me semble qu'on ne peut affecter à des cases à cocher que des procédures qui n'ont pas d'arguments, mais peut etre que je me trompe ou bien qu'il y a une manière détournée d'aborder le problème ?
J'espère que c'est clair, et je suis désolé de ne pas pouvoir fournir de fichier, c'est juste qu'il y a des dizaines de macros, qui sont un peu appelées toutes les unes par les autres, donc ça reviendrait à vous faire reprendre tout le projet :oops:
Merci d'avance pour votre aide !