code pour changer la couleur du bouton colonne triée

pascal21

XLDnaute Barbatruc
bonsoir
j'ai instaler un commandbutton au dessus d'un tri automatique pour remettre le tri à zéro plus rapidement
Code:
Selection.AutoFilter Field:=1
est-il possible que le bouton détecte un tri en cours et change de couleur pour signaler la colonne triée
comme le fait le bouton du tri actuellement mais en plus visible
ou si vous avez une autre solution je suis preneur
merci
 

job75

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

Bonsoir Pascal,

Ton problème est intéressant.

1) Pour remettre le filtre à zéro, il faut détecter la colonne activée :

Code:
Private Sub CommandButton1_Click()
With ActiveSheet.AutoFilter
  For i = 1 To .Filters.Count
    If .Filters(i).On Then Selection.AutoFilter Field:=i
  Next
End With
End Sub

2) Pour détecter l'activation d'un filtre il faut créer un évènement.

Je pense utiliser la fonction SOUS.TOTAL dont la valeur se modifie quand on active le filtre.

Une macro Worksheet_Calculate se déclanchera lors du recalcul et changera la couleur du bouton.

Je regarde ça :)

A+
 

Papou-net

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

Bonsoir pascal21, job75,

Pourquoi ne pas changer la couleur du bouton dans son événement Click ?

Ex :

Code:
Private Sub CommandButton1_Click()
CommandButton1.BackColor = &HC0C0FF
ActiveCell.Activate
Selection.AutoFilter Field:=1
CommandButton1.BackColor = &H8000000F
End Sub

Toutefois, si le tri est rapide, on n'a pas le temps de percevoir le changement de couleur.

Cordialement.
 

job75

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

Re, salut Papou-net,

Papou-net, et s'il y a plusieurs colonnes ?

Voici les macros dans le fichier joint :

Code:
Private Sub CommandButton1_Click()
If AutoFilterMode = False Then Exit Sub 'si pas de filtre...
Dim i As Byte
With AutoFilter.Filters
  For i = 1 To .Count
    If .Item(i).On Then Selection.AutoFilter Field:=i
  Next
End With
End Sub

Private Sub Worksheet_Calculate()
If AutoFilterMode = False Then Exit Sub 'si pas de filtre...
Dim couleur, i As Byte
On Error Resume Next 'si pas assez de couleurs...
couleur = Array(&HFF00&, &HFF&, &H8080FF, &HC0C0FF) 'à compléter suivant le nombre de colonnes
CommandButton1.BackColor = couleur(0)
With AutoFilter.Filters
  For i = 1 To .Count
    If .Item(i).On Then CommandButton1.BackColor = couleur(i)
  Next
End With
End Sub

Edit : remarquer que plusieurs colonnes peuvent être activées : la dernière détemine la couleur du bouton.

A+
 

Pièces jointes

  • Pascal(1).xls
    39.5 KB · Affichages: 78
Dernière édition:

job75

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

Rebonsoir,

Finalement la solution qui paraît la meilleure (car plus simple et finalement plus efficace) c'est de colorer des cellules plutôt que le bouton :

Code:
Private Sub CommandButton1_Click()
If AutoFilterMode = False Then Exit Sub 'si pas de filtre...
Dim i As Byte
With AutoFilter.Filters
  For i = 1 To .Count
    If .Item(i).On Then Selection.AutoFilter Field:=i
  Next
End With
End Sub

Private Sub Worksheet_Calculate()
If AutoFilterMode = False Then Exit Sub 'si pas de filtre...
Dim i As Byte
With AutoFilter.Filters
  [A2].Resize(, .Count).Interior.ColorIndex = 40 'fond couleur ocre
  [A2].Resize(, .Count).Font.ColorIndex = xlAutomatic
  For i = 1 To .Count
    If .Item(i).On Then
      Cells(2, i).Interior.ColorIndex = 5 'fond couleur bleue
      Cells(2, i).Font.ColorIndex = 2 'police couleur blanche
    End If
  Next
End With
End Sub

Bonne nuit.
 

Pièces jointes

  • Pascal(2).xls
    42 KB · Affichages: 93
Dernière édition:

pascal21

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

bonsoir à tous
j'ai regardé un peu les solutions proposées sans trouver exactement ce que je voulais
il est vrai que je n'ai pas fourni de fichier joint
je viens de faire quelques essais avec l'astuce suivante mais je n'arrive pas à finaliser
donc en A1 =sous.total(3;a3:a400) compte les cellules non vides après tri
en a2 =nbval(a3:a400) compte les cellules non vides
et le code suivant sur le bouton
Code:
if range ("a1")<> range("a2") then le bouton change de couleur
Selection.AutoFilter Field:=1
il faut que ça soit dans 'Worksheet_SelectionChange'
je ne sais pas faire revenir le bouton à sa couleur initiale lorsque le tri n'est plus actif
pouvez-vous m'aider
merci
 

pascal21

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

mouhai!!!!
je suis plus mitigé sur l'astuce que j'ai trouvé
en effet ça fonctionne avec une MFC si on a une seule colonne à trier
j'ai mis =$a$1<>$a$2 et le format
si je mets en colonne B =$b$1<>$b$2 les deux colonnes se colorent même si je fais un tri colonne C ou D
 

pascal21

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

bonsoir
j'ai retrouvé ça sur le forum
le plus ennuyant c'est que c'est suite à une de mes questions sur le même thème
je l'avais oublié
Code:
Private Sub Worksheet_Calculate()
Dim i As Byte
With ActiveSheet.AutoFilter
    For i = 1 To .Filters.Count
        Cells(1, i).Interior.ColorIndex = xlNone
        If .Filters(i).On = True Then
       Cells(1, i).Interior.ColorIndex = i + 34
        End If
    Next i
End With
End Sub
par contre si ça fonctionnait avant, ça ne fonctionne plus maintenant
et je ne comprends pas d'où ça peut venir
pire ça a fonctionné sur le classeur 1 ou 2 minutes et plus maintenant

autre question toujours sur le tri
est-il possible de modifier par vba le tri automatique pour obtenir un tri multiple (choisir 1 , 2 ou 3 critères pour gagner du temps sur la selection)
merci
 

pascal21

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

bonjour je suis toujours à la recherche d'une solution
et si vous pouviez me dire pourquoi le code çi-dessus ne fonctionne pas
je viens de le metre sur la déclaration clic droit et là ça fonctionne
que manque t'il pour que calculate fonctionne
merci
 
Dernière édition:

pascal21

XLDnaute Barbatruc
Re : code pour changer la couleur du bouton colonne triée

bonjour boisgontier
j'ai depuis peu ton site dans mes favoris
je le consulte de temps en temps et j'y trouve toujours des astuces inédites que je me dépêche d'adapter à mes classeurs qui deviennent tous les jours de plus en plus lourds lol!!!!!
encore ce matin la page sur le MFC, je ne me doutais pas des possibilités que l'on pouvaient adapter
bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 857
Messages
2 092 868
Membres
105 545
dernier inscrit
pourmanger