ns11 | Bonjour à tous !
Me voilà bloqué, ce n'est peut-être pas bien difficile mais je suis loin d'être bon en VBA... Seules les lignes de 19 à 33 nous intéressent.
- Ma ligne 32 (%Participation obligatoire) est normalement juste. Elle additionne le nombre de cellules remplies ET sur fond jaune (code 44), le tout divisé par la ligne 19, (le nb de collaborateurs mensuel).
- Ma ligne 33 (%Participation mensuelle) doit prendre en compte toutes les cellules codées type (CAU-01-001) (uniquement ce type de texte) qu'il y ai un background jaune ou non.
En effet, on retrouve certaines cellules rayées diagonalement (Pattern). Ces cellules peuvent être remplies du type ("malade", "déplacement" etc). Mais le problème, en mettant du texte autre qu'un code, c'est que ça change ma formule de %Participation mensuelle (ligne 33).
Pour bien faire il faudrait renseigner la macro du fait que, si une cellule est rayées (remplie ou non), elle ne doit pas intervenir dans le calcul de la %Participation mensuelle (ligne 33).
NB:[/b] une cellule remplie d'un codage non colorée d'un background est tout de même comptée.
Qui arrivera à résoudre ce problème ?
Spoiler :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim nombre_participant, nombre_participant_obligatoire, ligne_code As Integer
Dim ligne_debut_participant, ligne_fin_participant, ligne_participation_obligatoire, ligne_participant As Integer
ligne_code = 4
ligne_debut_participant = 20
ligne_fin_participant = 31
ligne_participation_obligatoire = 32
ligne_participant = 33
nombre_participant = 0
nombre_participant_obligatoire = 0
For i = 2 To 61
For j = ligne_debut_participant To ligne_fin_participant
If Worksheets("Suivi 2015" ).Cells(j, i).Interior.ColorIndex = 44 And Worksheets("Suivi 2015" ).Cells(j, i) <> "" Then ' = Worksheets("Suivi 2015" ).Cells(ligne_code, i) Then
nombre_participant_obligatoire = nombre_participant_obligatoire + 1
Else
Worksheets("Suivi 2015" ).Cells(ligne_participation_obligatoire, i) = ""
End If
If Worksheets("Suivi 2015" ).Cells(j, i) <> "" Then
ligne_participant = nombre_participant + 1
Else
Worksheets("Suivi 2015" ).Cells(ligne_participant, i) = ""
End If
If Worksheets("Suivi 2015" ).Cells(j, i) <> "CAU-01-001" Then
nombre_participant = ""
Else
Worksheets("Suivi 2015" ).Cells(ligne_participant, i) = nombre_participant = nombre_participant + 1
End If
Next
If nombre_participant_obligatoire <> 0 Then
Worksheets("Suivi 2015" ).Cells(ligne_participation_obligatoire, i) = nombre_participant_obligatoire / Cells(19, i)
Else
If nombre_participant = 0 Then Worksheets("Suivi 2015" ).Cells(ligne_participation_obligatoire, i) = ""
End If
If nombre_participant <> 0 Then
Worksheets("Suivi 2015" ).Cells(ligne_participant, i) = nombre_participant / Cells(19, i)
Else
If nombre_participant = 0 Then Worksheets("Suivi 2015" ).Cells(ligne_participant, i) = ""
End If
nombre_participant = 0
nombre_participant_obligatoire = 0
Next
'Worksheets("Suivi 2015" ).Cells(ligne_participation_obligatoire, 2) = Worksheets("Suivi 2015" ).Cells(20, 2).Interior.ColorIndex
End Sub |
Message édité par ns11 le 08-12-2015 à 10:23:23 ---------------
Nicolas
|