Compter des cellules d'une certaine couleur

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Solutions-xl
Le #20531401
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"
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


IMER09
Le #20531721
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"
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"
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


Daniel.C
Le #20533581
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


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

Merci
Rémi


"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






Daniel.C
Le #20533911
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"
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








IMER09
Le #20534141
Autant pour moi
C'est nikel
Grand merci
Rémi

"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"
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












IMER09
Le #20536051
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" news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"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"
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
















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

"IMER09" 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" news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"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"
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




















Daniel.C
Le #20536511
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" 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" news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"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"
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






















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

Rémi


"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" 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" news: %23Oap%
Autant pour moi
C'est nikel
Grand merci
Rémi

"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" 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


























Publicité
Poster une réponse
Anonyme