Nombre de cases colorées

  • Initiateur de la discussion Initiateur de la discussion Dok'
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

Dok'

Guest
Bonjour à tous,

Une petite question d'utilisation de visual basic :

Je voudrais écrire en A12 le nombre de cases coloriées d'une certaine couleur (par exemple en rouge, code : 3) sur l'élément de ligne A1:A10, puis le faire sur B1:B10 (l'écrire en B12), ...., jusqu'à la dernière ligne où la colonne A prend une valeur (par exemple à la ligne 100).

J'espère que je me suis bien expliqué.

Merci d'avance.

Dok'
 
Salut,
Essaye ça :

Sub Compte_Couleur()
Dim i, Compteur, j

i = 1
While Cells(i, 1) <> ""
Compteur = 0
For j = 1 To 10
If Cells(i, j).Interior.ColorIndex = 3 Then Compteur = Compteur + 1
Next j
Cells(i, 12) = Compteur
i = i + 1
Wend

End Sub
 
Merci beaucoup, j'ai adapté un peu ton programme car je voulais le faire en fonction du nombre de lignes de mon fichier (ici m = nombre de lignes = 100)--> voir mon programme à la fin de ce texte.

Le problème que j'ai maintenant, c'est qu'en fait ce programme marche très bien tant que les cases cooriées l'ont été faites "à la main".
En réalité il en est tout autre dans mon fichier et les cases coloriées en rouge sont issues d'une macro qui disait, en gros :

IF Valeur de la case non comprise entre x et y, alors colorier la case en rouge

Et la nouvelle macro ne repère plus les cases en rouge et marque donc 0 dans les cases de la colone 12 !

Comprends-tu ce que je veux dire ?
COMMENT FAIRE ???

Merci encore d'avance pour ton aide ou celle d'une autre personne



Sub Compte_Couleur()
Dim i, Compteur, j

k = 100
i = 1
Do Until IsEmpty(ActiveCell = True)
Compteur = 0
For j = 1 To 10
If Cells(i, j).Interior.ColorIndex = 3 Then Compteur = Compteur + 1
Next j
Cells(i, 12) = Compteur
i = i + 1
If i > k Then GoTo fin
Loop
fin:
End Sub
 
Ton probleme en fait, c'est que tu ne sais pas à quel numero correspond ta couleur.

Rajoute la ligne :

MsgBox Cells(i, j).Interior.ColorIndex
dans la fonction comme ci-dessous :

Sub Compte_Couleur()
Dim i, Compteur, j

k = 100
i = 1
Do Until IsEmpty(ActiveCell = True)
Compteur = 0
For j = 1 To 10
If Cells(i, j).Interior.ColorIndex = 3 Then Compteur = Compteur + 1
MsgBox Cells(i, j).Interior.ColorIndex
Next j
Cells(i, 12) = Compteur
i = i + 1
If i > k Then GoTo fin
Loop
fin:
End Sub


Comme ça, pour chacune des cellules à balayer, tu récupèrera le n° correspondant à la couleur.
Après, tu n'auras plus qu'à mettre cette valeur à la place de 3

Tiens-moi au courrant par le forum.
 
Correction de la procedure ci-dessus.
J'ai mis n'importe quoi.

Il faut mettre ça :

Sub Compte_Couleur()
Dim i, Compteur, j

k = 100
i = 1
Do Until IsEmpty(ActiveCell = True)
Compteur = 0
For j = 1 To 10
MsgBox Cells(i, j).Interior.ColorIndex
If Cells(i, j).Interior.ColorIndex = 3 Then Compteur = Compteur + 1
Next j
Cells(i, 12) = Compteur
i = i + 1
If i > k Then GoTo fin
Loop
fin:
End Sub
 
J'avais déjà essayé... en fait le message box me met toujours la valeur
-4142, que la acse soir rouge ou non coloriée.... je coimmence à désespérer... ce ne doit quand même pas être si compliqué que ça, non ?

Faut dire aussi que je suis un vrai novice de Visual Basic...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
0
Affichages
627
Retour