Comptabiliser les cellules colorées uniquement et pas leurs contenus

sebcbien67 Messages postés 22 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 30 mars 2009 - 19 déc. 2008 à 17:03
sebcbien67 Messages postés 22 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 30 mars 2009 - 21 janv. 2009 à 16:40
Bonjour à tous,

Voilà je travail avec un tableau Excel (2002 SP3), je souhaite comptabiliser les cellules colorées uniquement et pas leurs contenus. Est-ce faisable?
Attention j'utilise 3 sortes de couleurs (bleu, vert et rouge). Il faudra donc que le programme différenties les 3 couleurs et comptabilise uniquement les cellules de la même couleur.

Avez-vous une solution à me proposer?

Je reste à votre disposition si vous avez des questions
Merci d'avance

7 réponses

Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009
19 déc. 2008 à 20:12
Voila, au vu des renseignements que tu m'as communiqué, voici un code qui fonctionne. Je suis débutant aussi, donc ce n'est peut être pas le meilleurs code possible, mais ça marche (j'ai testé).
Je t'ai placé un max de "rem" pour t'expliquer chaque étape du code. il ne te reste qu'à faire un copier / coller à partir de "Option Explicit" et ça roule. Si tu dois modifier ton tableau, il te faudra modifier le code comme suit :
 - si tu changes l'origine du tableau, remplace D2 par la nouvelle valeur dans la ligne : Range("D2").Select- si ton tableau à plus de colonnes (31 à l'heure actuelle), remplace le 30 de la ligne : For i 0 To 30 par le nouveau nombre de colonnes -1 (For i 0 to 40 pour 41 colonnes par exemple).
- si ton tableau à plus de lignes, fait de même en remplaçant le 3 de : For j = 0 To 3 par le nouveau nombre de lignes - 1.
le reste se fera tout seul : les résultats iront se coller 2 colonnes plus loins quel que soit le nombre de colonnes (sauf si tu arrives au bout d'excel ) et pareil pour les résultatas en ligne.

Option Explicit
Dim bleu, rouge, vert, totbleu, totvert, totrouge, i, j As Byte '*** définition des variables comme valeur numériques de 0 à 255

Sub nombre_couleurs()


'*** selection de la cellule de départ


Range("D2").Select


'*** valeurs initiales des variables couleurs


bleu = 0
vert = 0
rouge = 0
totbleu = 0
totvert = 0
totrouge = 0


'*** boucle de comptage des couleurs


For j = 0 To 3


    For i = 0 To 30
        If ActiveCell.Offset(j, i).Interior.ColorIndex = 8 Then
            bleu = bleu + 1
        ElseIf ActiveCell.Offset(j, i).Interior.ColorIndex = 4 Then
            vert = vert + 1
        ElseIf ActiveCell.Offset(j, i).Interior.ColorIndex = 3 Then
            rouge = rouge + 1
        End If
    Next i
   
    '*** cumul des valeurs des couleurs (pour un total général)
   
    totbleu = totbleu + bleu
    totvert = totvert + vert
    totrouge = totrouge + rouge
   
    '*** inscription des résultats par ligne dans les cellules AJ pour bleu, AK pour vert et AL pour rouge
       
    ActiveCell.Offset(j, i + 1) = bleu
    ActiveCell.Offset(j, i + 2) = vert
    ActiveCell.Offset(j, i + 3) = rouge
       
    '*** réinitialisation des valeurs des couleurs
       
    bleu = 0
    vert = 0
    rouge = 0
   
Next j
   
    '***inscription des totaux par couleur dans les cellules AJ6, AK6 et AL6
   
    ActiveCell.Offset(j, i + 1) = totbleu
    ActiveCell.Offset(j, i + 2) = totvert
    ActiveCell.Offset(j, i + 3) = totrouge


End Sub
0
Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009
19 déc. 2008 à 20:17
Ha oui, petite rectification , si tu dépasses 255 lignes, ça ne marchera pas, il faudra alors changer la variable j de "byte" en "long".
0
Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009
19 déc. 2008 à 20:43
hmmm je post trop vite moi, car ce que j'ai écris plus haut s'applique aussi aux autres variables. En effet dès qu'une variable dépasse 255 il faut la changer en "long"

Désolé pour le flood
0
sebcbien67 Messages postés 22 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 30 mars 2009
20 déc. 2008 à 11:38
Ok ça fonctionne! par contre je souhaite maintenant qu'il m'affiche le résultat global en prenant tout le tableau (de D:2 et D:5 à GG:2 GG:5) dans les cases GP, GQ et GR. Quelle est la manip pour modifier cela dans le programme?

Merci mille fois
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009
20 déc. 2008 à 13:06
C'est expliqué dans le dernier post.
Compte le nombre de colonnes de ton tableau et reduit ce nombre de 1 et remplace le nombre 30 de la ligne :
For i = 1 to 30 par le nouveau nombre.
Pour un tableau de 50 colonnes, tu devras donc écrire : For i = 1 to 49
0
Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009
20 déc. 2008 à 13:41
C'est expliqué dans mon premier post.
Compte le nombre de colonnes de ton tableau et reduit ce nombre de 1 et remplace le nombre 30 de la ligne :
For i = 1 to 30 par le nouveau nombre.
Pour un tableau de 50 colonnes, tu devras donc écrire : For i = 1 to 49
0
sebcbien67 Messages postés 22 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 30 mars 2009
21 janv. 2009 à 16:40
Re-bonjour,
Je suis de retour avec un tableau de même type cad que je souhaite qu'un résultat s'affiche dans 2 cases (en V:4 et W:5), après avoir définie uniquement les 2 couleurs d'une colonne T de la ligne 4 à 50.

Quelqu'un a t'il une solution. Je reste à votre dispostion si vous avez des questions.
Merci
0
Rejoignez-nous