Calculer le nombre de bouton ActiveX selon une couleur

Bonjour à tous,

J'aimerais calculer le nombre de bouton ActiveX selon trois couleurs : vert, rouge, orange.

J'ai réussi à le mettre sous forme de bouton et un affichage de msgbox.

Cependant j'aimerais que ces résultats apparaissent dans des cellules. Exemple :

en I21 la somme des boutons verts

I22 somme des rouges etc

Auriez vous des idées? Merci par avance

16classeur1.xlsm (23.05 Ko)

Bonjour John91,

Je te propose de modifier le code de la macro 'CommandButton4_Click()' de la façon suivante:

Private Sub CommandButton4_Click()
    Dim nbR As Integer
    Dim nbV As Integer
    Dim nbJ As Integer
    Dim obj As OLEObject              'Objet OLE de la feuille
    Dim btn As MSForms.CommandButton  'Bouton

    'On boucle sur tous les objets OLE de la feuille
    For Each obj In ActiveSheet.OLEObjects
      If TypeName(obj.Object) = "CommandButton" Then
        Set btn = obj.Object
          Select Case btn.BackColor
              Case Is = vert
                  nbV = nbV + 1
              Case Is = rouge
                  nbR = nbR + 1
              Case Is = jaune
                  nbJ = nbJ + 1
          End Select
      End If
    Next obj

    'On valorise les cellules I
    ActiveSheet.Range("I21").Value = nbV
    ActiveSheet.Range("I22").Value = nbR
    ActiveSheet.Range("I23").Value = nbJ

End Sub

Bonjour GVIALLES,

Merci c'est exactement ce que je cherchais! et ça fonctionne parfaitement. Encore merci!

Pour embellir les boutons (et mettre un rectangle arrondi par exemple), j'ai tenté de transverser sur une macro mais elle ne fonctionne pas :

Option Explicit
Const vert& = 65280
Const rouge& = 255
Const jaune& = 39423
Sub test()

Private Sub Rectangleàcoinsarrondis1_Click()
Dim i, ii
i = Rectangleàcoinsarrondis1.BackColor
Select Case i
Case 65280: ii = 255
Case 255: ii = 39423
Case Else: ii = 65280
End Select
     Rectangleàcoinsarrondis1.BackColor = ii
End Sub

End Sub

Des idées? Ou alors peut-on modifier le bouton directement pour le rendre plus moderne?

Encore merci pour vos aides

Bonsoir John,

Pour obtenir un look plus moderne pour le boutons, je te suggère de remplacer les boutons 'OLE form' par des illustrations :

boutonillustation

Avec la condition suivante : donner un nom commençant par "btnCommand" aux boutons illustrations (par exemple: btnCommand1, btnCommand2, btnCommand3...)

D'autre part, il est nécessaire d'amender les 2 macros de la façon suivante :

Macro pour changer la couleur du bouton illustration :

Sub Reccoinsarrondis1_Cliquer()
    Dim oShape As Shape
    Dim i, ii

    For Each oShape In ActiveSheet.Shapes
        With oShape.Fill.ForeColor
            Select Case .RGB
                Case vbRed
                    .RGB = vbGreen
                Case vbGreen
                    .RGB = vbYellow
                Case Else
                    .RGB = vbRed
            End Select
        End With
    Next

End Sub

Pour calculer le nombre de boutons en fonction de leurs couleurs :

Sub countButtonsByColor()
    Const cBtnName = "btnCommand"
    Dim nbR As Integer
    Dim nbV As Integer
    Dim nbJ As Integer
    Dim obj As Shape

    'On boucle sur tous les objets shape de la feuille
    For Each obj In ActiveSheet.Shapes
        If Left(obj.Name, Len(cBtnName)) = cBtnName Then
            Select Case obj.Fill.ForeColor.RGB
              Case Is = vbGreen
                  nbV = nbV + 1
              Case Is = vbRed
                  nbR = nbR + 1
              Case Is = vbYellow
                  nbJ = nbJ + 1
          End Select
      End If
    Next obj

    'On valorise les cellules I
    ActiveSheet.Range("I21").Value = nbV
    ActiveSheet.Range("I22").Value = nbR
    ActiveSheet.Range("I23").Value = nbJ    

End Sub

Je joins le classeur qui m'a servi pour les tests :

16classeur1-gvs.xlsm (27.67 Ko)

Top ca fonctionnement parfaitement

Milles merci !!!!

Bonjour Gvialles,

Quand je veux rajouter une macro à un nouveau bouton, la macro fonctionne pour tous les boutons en meme temps.

J'ai trouvé une solution j'ai mis un targetbutton

Bonsoir…

Pour le Fun, une toute autre programmation tirée d’un de mes anciens travaux et pour des boutons indépendants.

Bonsoir Ordonc, c'est pas mal ton idée aussi.

Maintenant le niveau 2 m'attend. Il y aura des textes dans chaque bouton.

L'idée est d'extraire les textes des boutons et de les "classer" selon la couleur.

J'ai quelques pistes notamment avec Selection.Characters.Text mais il me manque des séparateurs et la dépendance de couleur

Rechercher des sujets similaires à "calculer nombre bouton activex couleur"