FOCNTION SI difficile...(j'y suis depuis 2 heures...peut être pas doué)
Bonjour tout le monde,
Et merci à tous à toutes et tous ceux qui peuvent m’aider. J’ai beaucoup de mal avec une fonction à créer. Ce ne devrait pas être compliqué, et j’essaie de m’en sortir tout seul…mais j’y arrive pôô …
Je vous joins un tableau.
L’idée est que le total de chaque semaine génère les cases vertes de cette façon :
- Si une personne est en télétravail 1 jour et le reste du temps "sur site" ou "absente" - > j'aimerais qu'elle compte en 1 jour télétravail
- Même chose pour télétravail 2 jours ou 3 jour ou 4 jours.
MAIS à la fois j’aimerais que (et c'est là où ça se complique)
- si une personne n’est jamais en télétravail et a au moins 3 jours sur site elle compte parmi les effectifs 100% sur site. (par exemple une personne absente 2 jours et 3 jours sur site comptera 100% sur site mais si absente 3 jours et 2 jours sur site elle comptera parmi les absents de la semaine).
- SI une personne est absente au moins 3 jours, elle compte parmi les absents peu importe ses jours de télétravail
Je sais pas si c'est faisable...?? Si oui, quelqu'un pourrait-il m'aider s'il vous plait ?
Merci beaucoup beaucoup !!!
Bonjour à toi!
Moi je te propose une solution en VBA, mais je ne suis pas certain d'avoir tout compris à ton problème
Sub EDT()
Dim ligne, colonne, NbAbs, NbTeleTravail, NbSurSite, Nb100Site, Nb100Distance, Nb1Tele, Nb2Tele, Nb3Tele, Nb4Tele, Absent As Integer
'initialisation des compteurs globaux
Nb100Site = 0
Nb100Distance = 0
Nb1Tele = 0
Nb2Tele = 0
Nb3Tele = 0
Nb4Tele = 0
Absent = 0
'Je parcours tout ton tableau, ici jusque la ligne 7, à modifier en fonction
For ligne = 3 To 7
'initialisation des compteurs perso
NbAbs = 0
NbTeleTravail = 0
NbSurSite = 0
'On regarde chaque jour de la semaine
For colonne = 3 To 7
If Cells(ligne, colonne) = "Absent(e) " Then
NbAbs = NbAbs + 1
ElseIf Cells(ligne, colonne) = "Sur site" Then
NbSurSite = NbSurSite + 1
ElseIf Cells(ligne, colonne) = "En télétravail" Then
NbTeleTravail = NbTeleTravail + 1
End If
Next colonne
Cells(ligne, 8) = NbTeleTravail
Cells(ligne, 9) = NbSurSite
Cells(ligne, 10) = NbAbs
If NbAbs <= 2 Then
If NbTeleTravail = 0 Then 'si absent max 2 jours et 0 en télétravail
Nb100Site = Nb100Site + 1
ElseIf NbTeleTravail = 1 Then 'Si 1 seul jour en télétravail etc...
Nb1Tele = Nb1Tele + 1
ElseIf NbTeleTravail = 2 Then
Nb2Tele = Nb2Tele + 1
ElseIf NbTeleTravail = 3 Then
Nb3Tele = Nb3Tele + 1
ElseIf NbTeleTravail = 4 Then
Nb4Tele = Nb4Tele + 1
ElseIf NbTeleTravail = 5 Then
'Je suppose que si quelqu'un est 100% en teletravail, il est noté 100% distance ?
Nb100Distance = Nb100Distance + 1
End If
Else
Absent = Absent + 1
End If
Next ligne
Cells(11, 3) = Nb100Site
Cells(12, 3) = Nb1Tele
Cells(13, 3) = Nb2Tele
Cells(14, 3) = Nb3Tele
Cells(15, 3) = Nb4Tele
Cells(16, 3) = Nb100Distance
End SubVoici un fichier pour voir ce que ça donne, en espérant t'avoir aider un peu
Merci beaucoup !!
J'ai retouché certaines choses du coup mais vous m'avez mis sur la voie.
C'est top !!
Grand merci !!