XL 2016 changement de couleur ligne si chekbox activé

USER2112

XLDnaute Nouveau
Bonjour à tous,
s'il vous plait quelqu'un peut m'aider, en fait je veut colorer les lignes de mon fichier selon le statut des chekbox qui se trouvent devant chaque ligne.
par exemple si sur la première ligne si le chekbox est coché, le couleur de la ligne change automatiquement.
 

Pièces jointes

  • chekbox.xlsm
    19.9 KB · Affichages: 73

laetitia90

XLDnaute Barbatruc
bonjour user:)
brut comme cela tu affecte la macro a tes controls formulaire
VB:
Sub es()
Dim i As Checkbox
For Each i In Feuil1.CheckBoxes
Rows(Right(i.Name, Len(i.Name) - 10) + 1).Interior.ColorIndex = xlNone
If i.Value = xlOn Then
Rows(Right(i.Name, Len(i.Name) - 10) + 1).Interior.ColorIndex = 3
End If
Next
End Sub
 

laetitia90

XLDnaute Barbatruc
re
ben!!! c'est ce que fait la macro es pour chaque box tu affecte la macro es non !!!!
les box demarre a partir de la ligne 2 dans ton exemple donc +1
Rows(Right(i.Name, Len(i.Name) - 10) + 1)

on pourrait un peu simplifier mais bon en general j'evite utiliser IIf dans des boucles si pas beaucoup de controls acceptable !!!
VB:
Sub es()
Dim i As Checkbox
For Each i In Feuil1.CheckBoxes
Rows(Right(i.Name, Len(i.Name) - 10) + 1).Interior.ColorIndex = IIf(i.Value = xlOn, 3, xlNone)
Next
End Sub

eventuellement on pourrait manipuler un module de classe mais bon !!!
 
Dernière édition:

USER2112

XLDnaute Nouveau
bonjour,
merci ça marche mais comme vous voyez les cases a cocher sont insérer automatiquement et ils sont variable selon le nombre de ligne si j'ajoute une ligne et j'execute la macro une case s'ajoute devant donc je veut automatiser la tache .
est ce que c'est possible d'affecter le macro automatiquement sur l'ensemble des chekbox
 

laetitia90

XLDnaute Barbatruc
re
essai comme cela j'ai change un peu ton code de creation de boxs donc le mien

VB:
Sub Checkbox()
Dim i
With Feuil1
For Each i In .CheckBoxes: i.Delete: Next
m = Application.WorksheetFunction.CountA(Feuil1.Range("$B:$B"))
For i = 2 To m
   With .CheckBoxes.Add(Range("K" & i).Left, _
        Range("K" & i).Top, Range("C" & i).Width, Range("C" & i).Height)
        .Caption = ""
       .Name = "box" & i
       .OnAction = "es"
    End With
  Next i
End With
End Sub
Sub es()
Dim i As Checkbox
For Each i In Feuil1.CheckBoxes
Rows(Right(i.Name, Len(i.Name) - 3)).Interior.ColorIndex = IIf(i.Value = xlOn, 3, xlNone)
Next
End Sub
 
Dernière édition:

Discussions similaires

Réponses
17
Affichages
611