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.
 

Fichiers joints

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
 

USER2112

XLDnaute Nouveau
Bonjour,
ce qui parait j'ai mal expliqué, je veut lorsque je coche le chekbox le couleur change sur la ligne elle même.
merci pour votre collaboration
 

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:

USER2112

XLDnaute Nouveau
Bonjour,
merci infiniment c'est ce que je cherche, et si je veut colorer que les cellule A et B de chaque ligne comment faire?
 

USER2112

XLDnaute Nouveau
Bonjour,
merci infiniment c'est ce que je cherche, et si je veut colorer que les cellule A et B de chaque ligne comment faire?
 

laetitia90

XLDnaute Barbatruc
re
change cette ligne

Rows(Right(i.Name, Len(i.Name) - 3)).Interior.ColorIndex = IIf(i.Value = xlOn, 3, xlNone)
par
Cells(Right(i.Name, Len(i.Name) - 3), 1).Resize(, 2).Interior.ColorIndex = IIf(i.Value = xlOn, 3, xlNone)

devrait le faire
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas