OVH Cloud OVH Cloud

Lier un bouton à une ligne

1 réponse
Avatar
arielle
Bonjour,

je suis novice en vba, peut etre pourriez-vous m'aider...

Alors voici mon problème,
j'ai une macro qui me permet d'ajouter des lignes à un tableau et à la création d'une ligne, se crée également une check box

Worksheets("e;synthèse"e;).Select
Rows("e;9:9"e;).Select
Selection.Insert (xlShiftDown)
Selection.Locked = False
Range("e;B9"e;) = lotexterne
Range("e;C9"e;) = tache
Set nomcheckbox = ActiveSheet.CheckBoxes.Add(Range("e;N9"e;).Left, Range("e;N9"e;).Top, Range("e;N9"e;).Width, Range("e;N9"e;).Height)

Pour l'instant tout va bien,
le problème vient lorsque je trie mes lignes par ordre alphabétique la check box associée ne bouge pas! je ne sais pas comment lier ma check box à la ligne correspondante...

MErci pour votre aide.

1 réponse

Avatar
MichD
Bonjour,

Si "lotexterne" et "tache" ne sont pas des variables,
tu dois les entourer de guillemets.

Pour que les "checkbox" suivent les cellules où elles
ont été placées, les bornes des "checkbox" doivent
être situées à l'intérieur de leur cellule respective et
la propriété "Placement" doit être à xlmove ou si tu
préfères, un clic droit sur le checkbox / format du contrôle /
onglet : propriétés / et tu sélectionnes le bouton radio :
"Déplacer sans dimensionner avec les cellules". Tu pourrais
aussi utiliser l'option : "Déplacer et dimensionner avec les
cellules". "Attention, si les cellules ne sont pas toutes de même
dimension.

Dans la majeure partie des situations, on n'est pas obligé de
sélectionner pour travailler avec les objets. Cette syntaxe
est préférable

'---------------------------------------
Sub test()
Dim Sh As Worksheet, Obj As Shape
Dim Rg As Range

'Adapte le nom de la feuille au besoin
Set Sh = Worksheets("fSynthèse")

With Sh
.Rows(9).EntireRow.Insert
.Range("B9") = lotexterne
.Range("C9") = tache
Set Rg = .Range("N9")
Set Obj = .Shapes.AddFormControl(xlCheckBox, Rg.Left, Rg.Top, _
Rg.Width, Rg.Height)
End With
With Obj
.Placement = xlMove
With .OLEFormat.Object
.Caption = "OK" 'Le texte sur le contrôle
.PrintObject = False
End With
End With
End Sub
'---------------------------------------

MichD
---------------------------------------------------------------