Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de données
Bonjour,
J'aimerais comptabiliser des cellules pleines (ayant des nombres écrits d'une certaine couleur) et dont la valeur est différente de 0.
Je connais seulement la fonction NBVAL permettant de comptabiliser les cellules pleines sur une plage de données. Reste le problème des deux conditions à respecter: couleur des caractères numériques et valeur différente de 0.
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Bonjour Vinz,
Je pourrai te proposer une solution par macro mais y'a juste un point que j'aimerai éclaircir, au lieu d'intégrer 2 conditions, le fait qu'il y ait un rang dans la colonne classement ne suffirait-il pas à dire que le joueur a participé à un tournoi?
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Merci pour vos réponses.
Si Wuted cela suffirait mais je ne veux pas savoir si le joueur a participé mais combien de fois il a participé.
R@chid j'ai testé ta solution mais le résultat pour chaque joueur est toujours 3 alors que certain n'ont pas fait de tournois.
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Re, Salut Rachid
Voici une proposition en VBA :
VB:
Sub Compteur()
Dim compteur As Integer
For i = 3 To Feuil2.Range("B65536").End(xlUp).Row
compteur = 0
For j = 6 To Feuil1.Range("A65536").End(xlUp).Row
If Feuil1.Range("A" & j).Value = Feuil2.Range("B" & i).Value Then
For k = 1 To Feuil1.Range("IV" & j).End(xlToLeft).Column - 1
If Feuil1.Range("A" & j).Offset(0, k) <> "" And Feuil1.Range("A" & j).Offset(0, k).Font.ColorIndex = 14 Then
compteur = compteur + 1
End If
Next k
End If
Next j
Feuil2.Range("C" & i).Value = compteur
Next i
End Sub
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
C'est super! Merci beaucoup, je vais essayer de comprendre ton code.
Si jamais l'emplacement des cellules de points changent ou la couleur, ou encore si d'autres tournois se rajoutent, que dois-je changer?
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Ok R@chid, désolé.
En ce qui concerne la solution de WUTED, j'ai un petit problème. Lorsque je supprime un tournoi (c'est à dire les colonnes D et E par exemple), eh bien la macro ne fonctionne plus et m'indique "erreur d'exécution 13" et lorsque je vais dans le débogage, il m'indique cette ligne en jaune:
If Feuil1.Range("A" & j).Offset(0, k) <> "" And Feuil1.Range("A" & j).Offset(0, k).Font.ColorIndex = 14 Then
Je ne comprend pas, d'autant plus que le code m'a l'air correct et que quand je rajoute un tournois (donc deux colonnes en plus), il n'y a aucune erreur.
Le fichier est le même que j'ai posté dans mon premier message.
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Re,
J'ai regardé en vitesse, mais je crois que c'est juste parce que t'as des formules qui deviennent invalides quand tu supprimes tes colonnes, ça te donne des cellules avec des valeurs d'erreur et ça fait bug les comparaisons, reste à voir si tu comptes corriger à chaque fois ces cellules ou si tu préfères dire au programme de les ignorer.
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Ah d'accord, effectivement c'est cela.
Non je pense corriger ces cellules. Mais par curiosité, comment demander au programme de les ignorer?
Merci de votre disponibilité.
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Bonjour Vinz,
Il suffirait d'ajouter une ligne au programme qui vérifie que la type de le la valeur contenue dans la cellule n'est pas vbError avec VarType (VarType) tel que :
VB:
Sub compteur()
Dim compteur As Integer
For i = 3 To Feuil2.Range("B65536").End(xlUp).Row
compteur = 0
For j = 6 To Feuil1.Range("A65536").End(xlUp).Row
If Feuil1.Range("A" & j).Value = Feuil2.Range("B" & i).Value Then
For k = 1 To Feuil1.Range("IV" & j).End(xlToLeft).Column - 1
If VarType(Feuil1.Range("A" & j).Offset(0, k)) <> 10 Then
If Feuil1.Range("A" & j).Offset(0, k) <> "" And Feuil1.Range("A" & j).Offset(0, k).Font.ColorIndex = 14 Then
compteur = compteur + 1
End If
End If
Next k
End If
Next j
Feuil2.Range("C" & i).Value = compteur
Next i
End Sub
Re : Comptabiliser des cellules (d'une certaine couleur) pleines sur une plage de do
Salut,
bon, premièrement j'ai modifié légèrement le code du compteur afin que les cellules possédant des caractères noirs ET bleus soient comptabilisées. Cela donne ceci (et ça fonctionne):
Code:
Sub compteur()
Dim compteur As Integer
For i = 3 To Feuil2.Range("B65536").End(xlUp).Row
compteur = 0
For j = 6 To Feuil1.Range("A65536").End(xlUp).Row
If Feuil1.Range("A" & j).Value = Feuil2.Range("B" & i).Value Then
For k = 1 To Feuil1.Range("IV" & j).End(xlToLeft).Column - 1
If Feuil1.Range("A" & j).Offset(0, k) <> "" And Feuil1.Range("A" & j).Offset(0, k).Font.ColorIndex = 14 Or Feuil1.Range("A" & j).Offset(0, k).Font.ColorIndex = 5 Then
compteur = compteur + 1
End If
Next k
End If
Next j
Feuil2.Range("E" & i).Value = compteur
Next i
End Sub
A partir de là il faut le fichier sous les yeux pour comprendre ce que je veux faire.
Je prendrais pour référence la feuille 1 du fichier joint.
-Vous remarquez qu'il y a deux couleurs (bleu, index 5 et vert index 14) pour noter la place de chaque candidat.
-Vous remarquez également qu'il y a pour une date unique, deux cellules "Nb joueurs" (une en bleu et l'autre en vert). En effet, à la même date il y a deux tournois: tournoi 1 et tournoi 2 respectivement.
Les joueurs peuvent très bien faire soit le tournoi 1, soit le tournoi 2 (mais jamais les deux le même jour évidemment!).
-Lors de la rentrée des résultats, on met la place qu'a fait le joueur sur le tournoi: s'il a fait le tournoi 1 sa place sera notée en bleu, s'il a fait le tournoi 2 elle sera notée en vert (s'il n'en a pas fait, la cellule correspondante reste vide!).
-Une fois la place rentrée, les points se calcule automatiquement. Or voilà, la formule a besoin d'une variable: le nombre de joueur sur le tournoi que le joueur a fait (1 ou 2). (voir formule dans le tableau). Et c'est pour cela qu'il faut absolument le "Nb joueurs" pour le tournoi 1 et le "Nb joueurs" sur le tournoi 2.
-Je ne veux pas m'amuser à changer la formule sans arrêt, donc je voudrais savoir si c'était possible de créer une macro qui exécutes ceci:
Si la couleur du chiffre de la place est bleu: alors il s'agit du tournoi 1. Le "Nb joueurs" correspondant est donc en E3 (pour le tournoi du 01.12.2011 sinon ça serait G3 pour celui du 01.01.2012, etc...). Application de la formule: 100*RACINE(E$3/(PUISSANCE(D6;EXP(10/E$3))))*PUISSANCE(2,2;LOG10(0+0,01)) Sinon si la couleur du chiffre de la place est vert: alors il s'agit du tournoi 2. Le "Nb joueurs" correspondant est donc en E4 (pour le tournoi du 01.12.2011 sinon ça serait G4 pour celui du 01.01.2012, etc...). Application de la formule: 100*RACINE(E$4/(PUISSANCE(D6;EXP(10/E$4))))*PUISSANCE(2,2;LOG10(0+0,01)) Sinon = 0
Voilà, j'espère avoir été explicite. Pour info le bleu utilisé est index_color 5 et le vert index_color 14.
Si vous pouviez m'aider, ça me permettrait de concrétiser mon projet.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.