Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compter des cellules d'une certaine couleur

10 réponses
Avatar
IMER09
Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du 6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non pas 4
ou 2 etc...
Est ce possible?

Merci Remi

10 réponses

Avatar
Solutions-xl
Bonjour

Rajoute le test If c.MergeCells = False Then comme ci dessous
Philippe
www.solutions-xl.com


Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0



cf = couleurfond.Interior.Color
For Each c In champ


If c.MergeCells = False Then
mc = 0
Else
mc = mc + 1
End If
If mc <= 1 Then
If c.Interior.Color = cf Then
temp = temp + 1
End If


end if
Next c
CompteCouleurFond2 = temp
End Function



On 10 nov, 19:32, "IMER09" wrote:
Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du 6/10/200 8)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If


endid
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non pas 4
ou 2 etc...
Est ce possible?

Merci Remi


Avatar
IMER09
Merci Philippe
Ca ne fonctionne pas
Dans certain cas je n'ai que des cellules fusionnées à compter
Pour exemple: dans l'essai que je viens de faire j'ai pour une couleur 39
cellules à compter (15 cellules sont la fusion de 2 cellules et 24 cellules
sont la fusion de 3 cellules), le resultat avec la modification que tu m'as
fourni me donne un resultat de 6.
Avant la modification le resultat etait 102 (15x2+24x3) ce qui est correcte
en soit mais je voudrai comme resultat 39
Merci

Rémi

"Solutions-xl" a écrit dans le message de news:

Bonjour

Rajoute le test If c.MergeCells = False Then comme ci dessous
Philippe
www.solutions-xl.com


Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0



cf = couleurfond.Interior.Color
For Each c In champ


If c.MergeCells = False Then
mc = 0
Else
mc = mc + 1
End If
If mc <= 1 Then
If c.Interior.Color = cf Then
temp = temp + 1
End If


end if
Next c
CompteCouleurFond2 = temp
End Function



On 10 nov, 19:32, "IMER09" wrote:
Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If


endid
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non pas
4
ou 2 etc...
Est ce possible?

Merci Remi


Avatar
Daniel.C
Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du 6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non pas 4
ou 2 etc...
Est ce possible?

Merci Remi


Avatar
IMER09
Bonjour Daniel C
Ca ne fonctionne pas j'ai comme resultat : different NOM? #NOM?

Merci
Rémi


"Daniel.C" a écrit dans le message de news:

Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non
pas 4 ou 2 etc...
Est ce possible?

Merci Remi






Avatar
Daniel.C
La fonction s'appelle "CompteCouleurFond3". Si l'erreur persiste, poste
un exemple sur www.cjooint.com.
Daniel

Bonjour Daniel C
Ca ne fonctionne pas j'ai comme resultat : different NOM? #NOM?

Merci
Rémi


"Daniel.C" a écrit dans le message de news:

Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non pas
4 ou 2 etc...
Est ce possible?

Merci Remi








Avatar
IMER09
Autant pour moi
C'est nikel
Grand merci
Rémi

"Daniel.C" a écrit dans le message de news:

La fonction s'appelle "CompteCouleurFond3". Si l'erreur persiste, poste un
exemple sur www.cjooint.com.
Daniel

Bonjour Daniel C
Ca ne fonctionne pas j'ai comme resultat : different NOM? #NOM?

Merci
Rémi


"Daniel.C" a écrit dans le message de news:

Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non
pas 4 ou 2 etc...
Est ce possible?

Merci Remi












Avatar
IMER09
Rebonjour

J'ai encore un Hic :tant que mes cellules sont fusionnées dans le sens
Horizontal pas de PB mais si j' ai des cellules fusionnées dans le sens
vertical et horizontal le resultat est incoherant ci joint fichier, il me
semble!!
Dans le fichier ci joint Les cases rouge et bleu sont bonnes par contre les
cases jaune le resultat et faux 785 au lieu de 936 (compter a la main) je
crois
http://cjoint.com/?llsYhi8tCt
Rémi

"IMER09" a écrit dans le message de
news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"Daniel.C" a écrit dans le message de news:

La fonction s'appelle "CompteCouleurFond3". Si l'erreur persiste, poste
un exemple sur www.cjooint.com.
Daniel

Bonjour Daniel C
Ca ne fonctionne pas j'ai comme resultat : different NOM? #NOM?

Merci
Rémi


"Daniel.C" a écrit dans le message de news:

Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non
pas 4 ou 2 etc...
Est ce possible?

Merci Remi
















Avatar
IMER09
Ci apres nouveau lien je crois qu'il y a un pb avec le premier
http://cjoint.com/?lltkTz68uK
Rémi

"IMER09" a écrit dans le message de
news: %
Rebonjour

J'ai encore un Hic :tant que mes cellules sont fusionnées dans le sens
Horizontal pas de PB mais si j' ai des cellules fusionnées dans le sens
vertical et horizontal le resultat est incoherant ci joint fichier, il me
semble!!
Dans le fichier ci joint Les cases rouge et bleu sont bonnes par contre
les cases jaune le resultat et faux 785 au lieu de 936 (compter a la main)
je crois
http://cjoint.com/?llsYhi8tCt
Rémi

"IMER09" a écrit dans le message de
news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"Daniel.C" a écrit dans le message de news:

La fonction s'appelle "CompteCouleurFond3". Si l'erreur persiste, poste
un exemple sur www.cjooint.com.
Daniel

Bonjour Daniel C
Ca ne fonctionne pas j'ai comme resultat : different NOM? #NOM?

Merci
Rémi


"Daniel.C" a écrit dans le message de news:

Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et
non pas 4 ou 2 etc...
Est ce possible?

Merci Remi




















Avatar
Daniel.C
OK, 936 :

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
Var = champ.Count
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells = True And _
champ(i).Address = champ(i).MergeArea(1).Address Then
temp = temp + 1
ElseIf champ(i).MergeCells = False Then
temp = temp + 1
End If
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Ci apres nouveau lien je crois qu'il y a un pb avec le premier
http://cjoint.com/?lltkTz68uK
Rémi

"IMER09" a écrit dans le message de
news: %
Rebonjour

J'ai encore un Hic :tant que mes cellules sont fusionnées dans le sens
Horizontal pas de PB mais si j' ai des cellules fusionnées dans le sens
vertical et horizontal le resultat est incoherant ci joint fichier, il me
semble!!
Dans le fichier ci joint Les cases rouge et bleu sont bonnes par contre les
cases jaune le resultat et faux 785 au lieu de 936 (compter a la main) je
crois
http://cjoint.com/?llsYhi8tCt
Rémi

"IMER09" a écrit dans le message de
news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"Daniel.C" a écrit dans le message de news:

La fonction s'appelle "CompteCouleurFond3". Si l'erreur persiste, poste
un exemple sur www.cjooint.com.
Daniel

Bonjour Daniel C
Ca ne fonctionne pas j'ai comme resultat : different NOM? #NOM?

Merci
Rémi


"Daniel.C" a écrit dans le message de news:

Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et non
pas 4 ou 2 etc...
Est ce possible?

Merci Remi






















Avatar
IMER09
Je suis imcapable de dechiffrer ce code
Mais je n'ai qu'un mot: PARFAIT
et un deuxieme MERCI

Rémi


"Daniel.C" a écrit dans le message de news:

OK, 936 :

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
Var = champ.Count
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells = True And _
champ(i).Address = champ(i).MergeArea(1).Address Then
temp = temp + 1
ElseIf champ(i).MergeCells = False Then
temp = temp + 1
End If
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Ci apres nouveau lien je crois qu'il y a un pb avec le premier
http://cjoint.com/?lltkTz68uK
Rémi

"IMER09" a écrit dans le message de
news: %
Rebonjour

J'ai encore un Hic :tant que mes cellules sont fusionnées dans le sens
Horizontal pas de PB mais si j' ai des cellules fusionnées dans le sens
vertical et horizontal le resultat est incoherant ci joint fichier, il
me semble!!
Dans le fichier ci joint Les cases rouge et bleu sont bonnes par contre
les cases jaune le resultat et faux 785 au lieu de 936 (compter a la
main) je crois
http://cjoint.com/?llsYhi8tCt
Rémi

"IMER09" a écrit dans le message de
news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"Daniel.C" a écrit dans le message de news:

La fonction s'appelle "CompteCouleurFond3". Si l'erreur persiste,
poste un exemple sur www.cjooint.com.
Daniel

Bonjour Daniel C
Ca ne fonctionne pas j'ai comme resultat : different NOM? #NOM?

Merci
Rémi


"Daniel.C" a écrit dans le message de
news:
Bonjour.

Function CompteCouleurFond3(champ As Range, couleurfond As Range)
Application.Volatile
Dim temp
cf = couleurfond.Interior.Color
For i = 1 To champ.Count
If champ(i).Interior.Color = cf Then
If champ(i).MergeCells Then
i = i + champ(i).MergeArea.Count
End If
temp = temp + 1
End If
Next
CompteCouleurFond3 = temp
End Function

Daniel

Bonjour a tous
Je viens de recuperer ce qui suit sur le forum (Message de JB du
6/10/2008)

Dans un module:

Function CompteCouleurFond2(champ As Range, couleurfond As Range)
Application.Volatile
Dim c, temp
temp = 0
cf = couleurfond.Interior.Color
For Each c In champ
If c.Interior.Color = cf Then
temp = temp + 1
End If
Next c
CompteCouleurFond2 = temp
End Function

Dans le tableur:

=CompteCouleurFond2(A1:A12;D1)

C'est parfait pour ce que je veux.
Le Hic j'ai des cellules fusionnées par 2 par 4 etc...
Sur ces cellules fusionnées je ne voudrai compter que 1 cellule et
non pas 4 ou 2 etc...
Est ce possible?

Merci Remi