Macro - décaler de colonne en colonne

Fermé
Thomas - 12 mars 2012 à 17:59
 Thomas - 15 mars 2012 à 09:54
Bonjour,

J'ai une macro qui me permet de compter dans une colonne le nombre de cellules d'une couleur donnée (qui correspondent à des catégories dans un planning) et de synthétiser les infos plus bas dans la même colonne. J'aimerai pouvoir créer une boucle afin de répéter cette opération de colonne en colonne sur 52 colonnes (52 semaines).

Mes connaissances étant limitées en VBA j'aurai besoin d'aide pour construire cette boucle (la macro ci-dessous est construite pour la colonne "B")

Merci pour votre aide précieuse,

Thomas

Détails :


Option Explicit
'Ti

'jaune = 6
'vert brillant = 4
'turquoise clair = 34
'bleu moyen = 37
'blanc = 2

'aucune couleur = -4142

Function Couleurs(Plage As Range, IndexCouleur As Integer) As Long
Dim Cel As Range
For Each Cel In Plage.Cells
If Cel.Interior.ColorIndex = IndexCouleur Then Couleurs = Couleurs + 1
Next Cel
End Function
Sub present()

Dim cell As Range
Dim Cvert As Long, Cjaune As Long, Cbleu As Long, CCong As Long

Cvert = 0
Cjaune = 0
Cbleu = 0
CCong = 0

For Each cell In Range("b3:b42")

With Selection

If cell.Interior.ColorIndex = 4 Then
Cvert = Cvert + 1
Range("b46").Value = Cvert
End If

If cell.Interior.ColorIndex = 6 Then
Cjaune = Cjaune + 1
Range("b47").Value = Cjaune
End If

If cell.Interior.ColorIndex = 37 Then
Cbleu = Cbleu + 1
Range("b48").Value = Cbleu
End If

If cell.Interior.ColorIndex = 34 Then
CCong = CCong + 1
Range("b49").Value = CCong
End If
End With
Next cell

End Sub


A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
12 mars 2012 à 22:07
bonjour

Tu mets ta fonction dans un module en rajoutant la ligne en gras :

Function Couleurs(Plage As Range, IndexCouleur As Integer) As Long
Dim Cel As Range
Application.Volatile
For Each Cel In Plage.Cells
If Cel.Interior.ColorIndex = IndexCouleur Then Couleurs = Couleurs + 1
Next Cel
End Function

puis tu mets les formules suivantes dans ces cellules :
B46 : =Couleurs(B$3:B$42;4)
B47 : =Couleurs(B$3:B$42;6)
B48 : =Couleurs(B$3:B$42;37)
B49 : =Couleurs(B$3:B$42;34)

Ensuite tu sélectionnes B46:B49 et tu "tires sur 52 colonnes.
1
@gbinforme, merci pour votre réponse rapide.
J'ai testé et ça fonctionne.
0