Récupérer les cases non vides sur certaines cases (planning)
Bonjour à tous et à toutes,
C'est mon premier post sur ce forum,
Je ne suis pas informaticien mais j'ai quelques bonnes bases d'informatique.
Je suis en train de travailler sur une trame pour réaliser des plannings.
J'ai besoin, pour répartir au mieux le nombre de week end sur tous les agents, d'avoir une mise à jour automatique du nombre de samedi et de dimanche que tous les agents font.
Pour ça j'avais réussi à faire une formule de cette forme :
=SOMMEPROD(NB.SI(INDIRECT({"G6";"N6";"U6";"AB6";"AI6"});">15"))
les cases correspondantes étant les samedi sur ma grille pour la ligne 6.
J'utilise des pastilles de couleur que je copie colle et j'ai dû par ce fait utiliser indirect avec someprod pour que ça s'actualise bien.
J'ai essayé de bidouiller avec les divers tutos un peu de VBA (sans aucune connaissance précise du domaine)
J'ai essayé de reproduire cette formule en déclarant une variable dans un module :
Function samedis(cellule As Range) As Integer
Application.Volatile
Lcellule = ActiveCell.Row
ActiveCell.FormulaR1C1 = "=SUMPRODUCT(COUNTIF(INDIRECT{("ADRESSE(Lcellule,7)";""ADRESSE(Lcellule,14)"";""ADRESSE(Lcellule,21)"";""ADRESSE(Lcellule,28)"";""ADRESSE(Lcellule,35)""},"">15""))"
End Function
Je n'arrive pas à le faire faire fonctionner ce code, à priori j'ai une erreur de syntaxe.
La raison pour laquelle j'essaie de bidouiller ce script en VBA c'est que je n'arrive pas à étirer le calcul du dessus et comme j'ai beaucoup d'agents, j'aimerais bien ne pas taper tout à la main :D
Est-ce qu'il y aurait quelqu'un qui pourrait m'aider à résoudre ce problème ?
Je vous remercie beaucoup par avance
Mathiouz
J'ai fini par trouver à force de tatonner !
pour ceux que ça pourrait intéresser voici le code qui va bien
Bonne soirée à tous
Function samedis(cellule As Range) As Integer
Application.Volatile
Dim Plage As Range
Maligne = cellule.Row
Set Plage = Intersect(Rows(Maligne), Range("G:G, N:N, U:U, AB:AB, AI:AI"))
samedis = 0
For Each LaCell In Plage
If LaCell.Value <> 0 Then
samedis = samedis + 1
End If
Next LaCell
End FunctionEdit modo : code mis entre balises