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

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


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

Statistiques des forums

Discussions
312 982
Messages
2 094 155
Membres
105 948
dernier inscrit
Frenesy