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

XL 2016 Création de checkboxes, décalage inexpliqué

Elsa.b4

XLDnaute Nouveau
Bonjour à tous !

Je cherche à automatiser sur 126 lignes la création d'une checkbox dans la la colonne E.
Ensuite, je veux lier cette checkbox à la cellule correspondante.
Dans le principe ça fonctionne, mais je me retrouve embêtée car plus on avance dans les lignes, plus les les checkboxes se décalent par rapport à leur position supposée....
Je ne comprends pas puisque leur position est sensée être fixée par rapport à la cellule dans laquelle elles se trouvent (définition du T dépend de l'itération).
Le T en question est sensé être la position de la checkbox par rapport au haut de la page.
Je me demandais s'il était possible de positionner la checkbox par rapport à la cellule plutôt que par rapport à la page, ça me permettrait d'être sure que la checkbox sera toujours au bon endroit, même si la hauteur des lignes est modifiée.

Voilà mon code (j'ai mis en pièce jointe une photo du décalage progressif des lignes):

Sub Creercheckbox()
'Définition des variables
Dim i As Byte
Dim L As Integer, T As Integer, W As Integer, H As Integer

'Début de la boucle
For i = 2 To 126

L = Range("E" & i).Left
T = Range("E" & i).Top
W = Range("E" & i).Width
H = Range("E" & i).Height

'Création et définition de la chbx
ActiveSheet.CheckBoxes.Add(L, T, W, H).Select
Selection.Characters.Text = ""

'Liaison de la checkbox à sa cellule
Selection.LinkedCell = Cells(i, "E").Address

Next

End Sub

Je vous remercie pour votre aide !
Elsa
 
Solution
Bonjour,

J'ai fait un essai avec ce code, qui ne crée pas de décalage.

VB:
Sub test()

For i = 2 To 126

 T = Range("E" & i).Top
 H = Range("E" & i).Height

 'Création et définition de la chbx
 With ActiveSheet.CheckBoxes.Add(Range("E1").Left, T, Range("E1").Width, H)
   .Characters.Text = ""
   'Liaison de la checkbox à sa cellule
   .LinkedCell = Cells(i, "E").Address
 End With
  
Next

End Sub
Pouvez-vous réessayer sur un classeur vierge cette procédure et nous dire si le décalage continue de s'opérer ?

Softmama

XLDnaute Accro
Bonjour,

J'ai fait un essai avec ce code, qui ne crée pas de décalage.

VB:
Sub test()

For i = 2 To 126

 T = Range("E" & i).Top
 H = Range("E" & i).Height

 'Création et définition de la chbx
 With ActiveSheet.CheckBoxes.Add(Range("E1").Left, T, Range("E1").Width, H)
   .Characters.Text = ""
   'Liaison de la checkbox à sa cellule
   .LinkedCell = Cells(i, "E").Address
 End With
  
Next

End Sub
Pouvez-vous réessayer sur un classeur vierge cette procédure et nous dire si le décalage continue de s'opérer ?
 

Elsa.b4

XLDnaute Nouveau
Bonjour !

Je suis impressionnée par votre réactivité !
ça fonctionne effectivement sur un classeur vierge, mais pas sur le classeur sur lequel je veux ajouter les checkboxes...
J'ai donc transferré mon classeur actuel dans un nouveau classeur
Merci pour tout et belle journée
Elsa
 
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…