XL 2010 comptabiliser suivant sa valeur et sa couleur

SSI83000

XLDnaute Occasionnel
Bonjour à tous je reviens vers vous pour un problème que je n'arrive pas à trouver une solution adéquate malgré l'aide de christ.

Je recherche donc une solution rapide pour pas dire presque instantanée de comptabilisé soit par macro soit par formule
les noms présents dans ma liste selon la condition que la couleur de fond soit jaune et de mettre le nombre de fois que le nom et la couleur de fond en colonne K.

pouvez vous m'aider svp merci
 

Pièces jointes

  • Classeur15.xlsx
    35.5 KB · Affichages: 45

DoubleZero

XLDnaute Barbatruc
Bonjour, SSI83000, le Forum,

Comme ceci ?
VB:
Option Explicit
Sub Qui_combien()
    Dim c As Range
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
    Columns(11).Clear: Columns(1).Insert
    For Each c In Columns("b:d").SpecialCells(xlCellTypeConstants, 2)
        If c.Interior.ColorIndex = 6 Then c.Copy Destination:=Range("a" & Rows.Count).End(xlUp)(2)
    Next
    With Range("l1:l" & Cells(Rows.Count, 11).End(xlUp).Row)
        .FormulaR1C1 = "=COUNTIF(C[-11],RC[-1])"
        .Value = .Value
    End With
    Columns(1).Delete
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub
A bientôt :)
 

SSI83000

XLDnaute Occasionnel
Bonjour double zero merci pour cette macro rapide parfaite c'est ce qui me fallait puis je te demander les détail de la macro car si je doit déplacer d'une colonne à droite ou au lieu utilisé une plage utilisé une colonne exemple D j'aimerais savoir ou je doit modifier que j’apprenne un peu en même temps à me débrouiller un peu seul merci d'avance
 

DoubleZero

XLDnaute Barbatruc
Bonjour, SSI83000, le Forum,

Voici le code commenté :
VB:
Option Explicit
Sub Qui_combien()
' variable déclarer
    Dim c As Range
    ' temps d'exécution accélérer
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
    'colonne 11 effacer, colonne 1 insérer
    Columns(11).Clear: Columns(1).Insert
    ' constantes des colonnes b à d
    For Each c In Columns("b:d").SpecialCells(xlCellTypeConstants, 2)
        ' si couleur = jaune, copier en colonne a
        If c.Interior.ColorIndex = 6 Then c.Copy Destination:=Range("a" & Rows.Count).End(xlUp)(2)
    Next
    ' formule en colonne 12 insérer
    With Range("l1:l" & Cells(Rows.Count, 11).End(xlUp).Row)
        ' =NB.SI(B:D;J1)
        .FormulaR1C1 = "=COUNTIF(C[-11],RC[-1])"
        ' formule convertir en valeur
        .Value = .Value
    End With
    ' colonne 1 supprimer
    Columns(1).Delete
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub
Je déposerai, dès que possible, une nouvelle version.

A bientôt :)
 

SSI83000

XLDnaute Occasionnel
Re double Zero petite question les noms de ma base de donnée sont alimenter via une formule de ce genre
Code:
=SIERREUR(INDEX(Parametre!J$2:J$370;PETITE.VALEUR(SI(NB.SI(Dispo!$B$3:$B$39;Parametre!J$2:J$370)>0;LIGNE(Parametre!J$2:J$370)-1);LIGNES($1:1)));"")

et je me rend compte que ta macro ne fonctionne avec des noms en dur pas des noms insérer via des formules comment pourrais je contourner cela svp merci
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous, 00 ;)

Une autre macro pour compter les cellules jaunes (avec l'aide du Filtre)
VB:
Sub Macro1()
ActiveSheet.AutoFilterMode = False
Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).AutoFilter Field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor
MsgBox "Colonne A: " & Application.Subtotal(3, ActiveSheet.AutoFilter.Range) - 1
ActiveSheet.AutoFilterMode = False
Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp)).AutoFilter Field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor
MsgBox "Colonne B: " & Application.Subtotal(3, ActiveSheet.AutoFilter.Range) - 1
ActiveSheet.AutoFilterMode = False
Range(Cells(1, 3), Cells(Rows.Count, 3).End(xlUp)).AutoFilter Field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor
MsgBox "Colonne C: " & Application.Subtotal(3, ActiveSheet.AutoFilter.Range) - 1
ActiveSheet.AutoFilterMode = False
End Sub
NB: Je ne sais plus si Excel 2010 sait filtrer par couleur
Pour tester, j'ai pris un classeur avec trois colonnes A,B,C dans lesquelles il y a des cellules avec fond jaune.
Sur Excel 2013, les Msgbox affiche bien le nombre de cellules jaunes par colonnes.
 

Discussions similaires

Statistiques des forums

Discussions
312 503
Messages
2 089 062
Membres
104 014
dernier inscrit
Aurélie MONTEIL