Bonjour
Je suis face à un nouveau problème, j'ai un tableau (planning de présences et absentéismes) qui contient des cellules qui ont une bordure rouge (Cellules en anomalies). J'aimerais pouvoir comptabiliser pour chaque ligne et sur une plage variable (En fonction de la période) le nombre de cellules avec ce contour rouge. Dans une premier temps j'insère une colonne avec une entête et une bordure rouge (Cf. code 1 ci-dessous) J'en profite pour remercier a nouveau BENNASR pour le coup de main. C'est dans cette colonne à partir de la ligne 3 et jusqu'à la fin du tableau que j'aimerais ajouter automatiquement ce compteur. J'arrive à le faire manuellement en faisant appel à une fonction (Cf. code2), en fait je copie ça : =getColorCount(B26:BE26;$BA$25) dans la 3ème ligne de cette nouvelle colonne et je l'applique à chaque ligne de mon tableau. Le problème c'est que les lignes et les colonnes ne sont pas fixes et cela reste une manipulation manuelle. j'ai fait des tests notamment avec formula mais cela ne fonctionne pas. Après plusieurs recherches sur internet je n'ai pas réussi à trouver la solution. Je me permets donc de vous solliciter.
En vous remerciant par avance
Arnaud

Code 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim O As Object 'déclare la variable O (Onglet)
Dim R As Range 'déclare la variable R (Recherche)
Dim col As Byte 'déclare la variable COL (COLonne)
 
Set O = Sheets("Ctrl Planning GA") 'définit l'onglet O (à adapter)
Set R = O.Rows(1).Find("Sécabilité", , xlValues, xlWhole) 'définit la recherche R (recherche "Sécabilité" dans la ligne 1 (à adapter) de l'onglet O)
 
If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
    col = R.Column 'définit la colonne COL
    O.Columns(col + 1).Insert shift:=xlToRight  'insère une colonne après la colonne COL
    O.Cells(1, col + 1) = "Cadre Rouge"
    O.Cells(1, col + 1).Borders.Value = 1 'appliquer une bordure, 1 étant l'épaisseur
    O.Cells(1, col + 1).Borders.Weight = 3 'mettre la bordure en gras
    O.Cells(1, col + 1).Borders.Color = RGB(255, 0, 0) 'mettre la bordure rouge
    'O.Cells(3, col + 1).formula "=getColorCount(B3:BE3;$BG$1)"
Code 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
*******************************************************************
' Procédure pour comptabiliser le nombre de cellules avec un contour
'*******************************************************************
Function GetColorCount(CountRange As Range, CountColor As Range)
Dim CountColorValue As Integer
Dim TotalCount As Integer
CountColorValue = CountColor.Borders.ColorIndex
Set rCell = CountRange
For Each rCell In CountRange
  If rCell.Borders.ColorIndex = CountColorValue Then
    TotalCount = TotalCount + 1
  End If
Next rCell
GetColorCount = TotalCount
 
'Formule a appilquer dans Excel => =getColorCount(B26:BE26;$BA$25)
End Function