Macro - décaler de colonne en colonne
Thomas
-
Thomas -
Thomas -
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
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:
- Macro - décaler de colonne en colonne
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
- Figer colonne excel - Guide
1 réponse
bonjour
Tu mets ta fonction dans un module en rajoutant la ligne en gras :
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.
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.
J'ai testé et ça fonctionne.