Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Connaitre l'adresse d'une checkbox

idefix67

XLDnaute Nouveau
Bonjour,
J'ai construit un tableau d'une 40aine de lignes, chaque ligne à une checkbox+macro.
Afin de ne pas multiplier les macros, je souhaiterai récupérer l'adresse de la checkbox, afin d'utiliser la même macro !

Pouvez vous m'aider la dessus ?

voici la macro utilisée:

Sub CheckBox1_Click()
'si boite active, alors copier le texte et le coller dans la premiere case vide
'de la feuille "liste sélectionner"
If ActiveSheet.Shapes(Application.Caller).ControlFormat.Value = 1 Then
Range("A2").Copy
Sheets("Liste sélectionnée").Select
ActiveSheet.Cells(Rows.Count, "A").End(xlUp)(2).Select
ActiveSheet.Paste
Sheets("Liste complète").Select
Application.CutCopyMode = False
'si boite non active, alors rechercher le texte de la case dans
'la feuille "liste sélectionner" et supprimer la ligne
Else
Sheets("Liste complète").Range("A2").Select
mot = Selection
Sheets("Liste sélectionnée").Select
Cells.Find(What:=mot, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Rows("1:1").EntireRow.Delete
Sheets("Liste complète").Select
End If
End Sub


Merci d'avance
 

eriiic

XLDnaute Barbatruc
Re : Connaitre l'adresse d'une checkbox

Bonsoir,

un X dans une cellule est beaucoup plus facile à gérer.
Au-delà d'une dizaine d'objets c'est s’embêter pour rien...

Fais ton marché :
Code:
coinSupérieurGauche = ActiveSheet.Shapes("CheckBox1").TopLeftCell.Address
coinInférieurDroit = ActiveSheet.Shapes("CheckBox1").BottomRightCell.Address
LignecoinSupérieurGauche = ActiveSheet.Shapes("CheckBox1").TopLeftCell.Row
ColonneSupérieurGauche = ActiveSheet.Shapes("CheckBox1").TopLeftCell.Column

eric
 

Dranreb

XLDnaute Barbatruc
Re : Connaitre l'adresse d'une checkbox

Bonsoir
un X dans une cellule est beaucoup plus facile à gérer.
Complètement d'accord avec toi.
Voire 0 ou 1, avec comme format de nombre personnalisé:
Code:
[=0]"¨";"þ"
et la police WingDings qui font représenter une case à cocher à la cellule, qui apparaît cochée pour 1 et non cochée pour 0.
Et cette procédure dans le module de la feuille:
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count <> 1 Or Intersect(Me.Columns(x), Target) Is Nothing Then Exit Sub
Target.Value = -(Target.Value = 0)
End Sub
Pour cocher ou décocher la case.
Cordialement.
 

idefix67

XLDnaute Nouveau
Re : Connaitre l'adresse d'une checkbox



Merci bcp Eriiic de ta réponse

Pil poil ce que je souhaitais !

A+
 

idefix67

XLDnaute Nouveau
Re : Connaitre l'adresse d'une checkbox

Re-bonsoir,


Encore une p'tite question.
Dans mon fichier, j'ai plusieurs checkbox, existe-t-il 1 macro pour savoir quelle est la denière checkbox qui a été activée ?

L'objectif est de ne pas créer une macro par checkbox (env 40!!), mais de savoir quelle est la denière checkbox qui a été activée afin d'en déterminer l'adresse et d'enclencher la macro correspondante.

Voici la macro en cours:
__________________________________________________
Sub CheckBox9_Click()

'si boite active, alors copier le texte et le coller dans la premiere case vide
'de la feuille "liste sélectionner"

ligne = ActiveSheet.Shapes("Case à cocher 7").TopLeftCell.Row

If ActiveSheet.Shapes(Application.Caller).ControlFormat.Value = 1 Then
Range("A" & ligne, "B" & ligne).Copy
Sheets("Liste sélectionnée").Select
ActiveSheet.Cells(Rows.Count, "A").End(xlUp)(2).Select
ActiveSheet.Paste
Sheets("Liste complète").Select
Application.CutCopyMode = False

'si boite non active, alors rechercher le texte de la case dans
'la feuille "liste sélectionner" et supprimer la ligne
Else
Sheets("Liste complète").Range("A" & ligne).Select
mot = Selection
Sheets("Liste sélectionnée").Select
Cells.Find(What:=mot, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Rows("1:1").EntireRow.Delete
Sheets("Liste complète").Select

Sheets("Liste complète").Select
End If

End Sub
________________________________

L'objectif est de remplacer l'info 'Shapes("Case à cocher 7")' par une variable dernière checkbox activée;

Merci d'avance.
 

eriiic

XLDnaute Barbatruc
Re : Connaitre l'adresse d'une checkbox

Bonsoir,

tu te sers toujours de l'évènement click je suppose.
Passe en paramètre le n° de la checkbox concernée à ta procédure commune.

ex :
Code:
Private Sub CheckBox1_Click()
   traitement (1)
End Sub

Sub traitement(no_cbx As Long)
    MsgBox ("Etat cbx n° " & no_cbx & " : " & CheckBox1)
End Sub

eric

PS : Merci pour le doublon sur autre site sans prévenir.
Tu aimes faire bosser les gens pour toi pour rien ?
Sans respect pour les intervenants donc ?

Ok, comme ça je sais qu'à l'avenir ça sera inutile de lire tes questions car sans doute qcq'un cherche déjà aillleurs. C'est noté.

eric
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…