Affectation personnel par rotation

Bonjour,

comme montré sur le fichier joint,

j'ai trois personnes (A,B,C) que je veux affecter par jour,

j'ai deux plans, un plan fixe pour dimanche, lundi, mardi, et un plan rotation pour mercredi, jeudi, vendredi, samedi.

donc pour le plan fixe, il n y a pas de problème, j'affecte toujours A= dimanche, B= lundi, c=mardi.

mon problème est avec la rotation,

sur le fichier joint, j'ai laissé la rotation en R, mais je veux que ça soit comme montré sur la feuille Rotation,

alors pour mercredi, jeudi, vendredi et samedi, je veux attribuer A=mercredi, B=jeudi, C=vendredi, A=samedi,

et la semaine qui suit: B=mercredi, C=jeudi, A=vendredi, B=samedi...et ainsi de suite.

est ce qu'il y a un moyen de le faire automatiquement, dès que je change l'année, ça me donne l'affectation de toute l'année.

Merci et j'espère que c'est claire.

Bonjour,

Est-ce-que tes formules, dans la Feuille Affectation, aux lignes 4,7,10,etc ... fonctionnent correctement ... comme tu le souhaites ...???

Re, et merci pour votre réponse rapide,

elles fonctionnent correctement juste pour le plan fixe, donc pour dim, Lun, mar, mais le problème avec le plan rotation la ou il y a un R, je veux que ça soit comme dans la feuille Rotation et comme expliqué précédemment.

Merci.

Re,

Merci pour la clarification ...

Bonjour,

Moi je sais faire cela mais sans formule (donc avec macro).

Cependant tes explications ne me suffisent pas. En effet tu fais référence à une semaine 1 qui commencerait un dimanche... or l'année 2015 commence par un jeudi...

De plus selon les normes (ISO Europe) usuelles la semaine 1 de 2015 est censée aller du Lundi 29 Décembre au Dimanche 4 janvier. et ça pose un problème pour le repérage avec ta feuille rotation.

Donc la question est comment faut-il lire ta feuille rotation ?

Comme ta feuille rotation ne me sert à rien pour ces calculs et que de toutes façons tes semaines ne tiennent pas compte du calendrier, il suffit de me dire qui a travaillé le premier janvier J'en déduirai le reste.

A+

Bonjour,

En réponse à votre question, celui qui a travaillé le premier jour de l'année c'est comme indiqué sur la feuille rotation donc un B,

et pour la norme ISO, il suffit d'extraire les jours de la semaine à partir de la feuille rotation, donc pour la semaine 1 du lundi au dimanche, on extrait l'affectation de la feuille Rotation du lundi au dimanche suivant.

j'aurai aimé que la solution soit par fonctions, et automatique pour n'importe quelle année mais s'il n y a que les macros pour la réaliser alors on n'a pas le choix.

Merci.

bonjour,

Hum... J'ai pas dit que ce n'était pas possible avec des fonctions hein !

mettre les 2 macros dans le module "Affectation" puis lancer la macro "galopin"

cerise sur le gateau : c'est valable quelle que soit l'année...

Sub galopin()
Dim k%
For i = 2 To 35 Step 3
   For ii = 2 To 32
      If IsDate(Cells(i, ii).Value) Then
      k = Cells(i, ii) Mod 63
      Cells(i + 2, ii) = KIBOSSE(k)
      End If
   Next
Next
End Sub

Function KIBOSSE(k%)
Dim S$
Select Case k
Case 0, 3, 6, 10, 12, 17, 18, 21, 24, 27, 31, 33, 38, 39, 42, 45, 48, 52, 54, 59, 60: S = "C"
Case 1, 4, 7, 8, 13, 15, 19, 22, 25, 28, 29, 34, 36, 40, 43, 46, 49, 50, 55, 57, 61:: S = "A"
Case Else: S = "B"
End Select
KIBOSSE = S
End Function

A+

Re,

j'ai testé le programme et ça marche bien, est ce qu'il y a un moyen de lancer la macro dès qu'il y aura un changement de l'année ?

en attendant, peut être il y aura des membres qui peuvent trouver la solution par fonctions.

Merci galopin01.


Re,

j'ai trouvé, ce qu'il faut faire pour lancer la macro automatiquement en changent l'année:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Application.Intersect(Target, Range("A1")) Is Nothing Then

   '********* Appel de la Macro *****************
   galopin
 End If
End Sub

je n'ai jamais essayé de travailler via des macros,

A +

Re,

en testant les différents cas, il y a un problème au niveau du mois de Février, si je mets l'année 2016 il a 29 jours puis je reviens sur 2015 il a 28 jours, il garde l'affectation du 29eme jour du 2016.

peut on rectifier cette erreur ?

est ce vous pouvez commenter le programme, j'aimerai bien le comprendre.

Concernant le mod que vous avez utilisé, est ce qu'il est entre une date et 63 ?

j'ai essayé de le comprendre en vain ... je ne suis pas doué en vba.

Merci.

Bonjour,

Dans un premier temps, le sujet qu'il faut clairement résoudre est celui du Numéro de la semaine ... pour chacun des jours du calendrier (et surtout Février...) pour ensuite se rabattre sur la feuille Rotation avec une formule ...

James007 a écrit :

Bonjour,

Dans un premier temps, le sujet qu'il faut clairement résoudre est celui du Numéro de la semaine ... pour chacun des jours du calendrier (et surtout Février...) pour ensuite se rabattre sur la feuille Rotation avec une formule ...

donc ça doit être compliqué pour résoudre le problème via formules ...

Re,

Non ... ce n'est pas du tout compliqué avec le fameux couple Index() Equiv() ...

Mais le lien qui compte c'est celui qui relie chaque jour à ... son numéro de semaine ...

Ou ... inversement ... si cela est plus clair ... à quels jours précis correspondent les Numéros de Semaine que tu as définis dans ta Feuille Rotation ???

James007 a écrit :

Re,

Ou ... inversement ... si cela est plus clair ... à quels jours précis correspondent les Numéros de Semaine que tu as définis dans ta Feuille Rotation ???

c'est ça le problème, Alors pour mer, jeu, ven, sam j'ai commencé par mer= A, jeu = B, ven = C, sam = A et ainsi de suite, donc il n y a pas une relation entre les numéros de semaine et les jours, et c'est ça le principe de rotation.

Bonjour,

Tu peux aussi modifier la macro comme suit

Sub galopin()
Dim k%
For i = 2 To 35 Step 3
   For ii = 2 To 32
      Cells(i + 2, ii) = ""
      If IsDate(Cells(i, ii).Value) Then
      k = Cells(i, ii) Mod 63
      Cells(i + 2, ii) = KIBOSSE(k)
      End If
   Next
Next
End Sub

A+

galopin01 a écrit :

Bonjour,

Tu peux aussi modifier la macro comme suit

Merci ...

Re,

Ci-joint ton fichier test ... en formules ... à valider ...

James007 a écrit :

Re,

Ci-joint ton fichier test ... en formules ... à valider ...

je pense qu'il y a une erreur quelque part, la rotation n'est pas faite comme il faut,

dans le premier jour 2015, un jeudi contient un C, normalement dans vendredi on aura un A,

donc pour mer, jeu, ven, sam on aura A, B, C, A, ...Etc.

j'ai pas vu la formule pcq c un cauchemar pour le moment

est ce que cette formule est valable avec n'importe quelle année?

A +

Bonjour,

En fait on peut améliorer le code comme ça :

Sub galopin()
Dim k%
For i = 2 To 35 Step 3
   For ii = 2 To 32
      Cells(i + 2, ii) = ""
      If IsDate(Cells(i, ii).Value) Then
      k = Cells(i, ii) Mod 21
      Cells(i + 2, ii) = KIBOSSE(k)
      End If
   Next
Next
End Sub

Function KIBOSSE(k%)
Dim S$
Select Case k
Case 5, 9, 11, 14, 16, 20, 2: S = "B"
Case 0, 3, 6, 10, 12, 17, 18: S = "C"
Case Else: S = "A"
End Select
KIBOSSE = S
End Function

En effet c'est le même cycle qui recommence tous les 21 jours...

A+

Re,

Ci-joint une deuxième version formules ... avec le tableau Rotation ... trié par jour de la semaine ... à valider ...

galopin01 a écrit :

Bonjour,

En fait on peut améliorer le code comme ça :

A+

s'il vous plait, peut on modifier le code pour l'adapter à la rotation selon le fichier joint, j'ai essayé de modifier juste les lettres mais la rotation est fausse.


James007 a écrit :

Re,

Ci-joint une deuxième version formules ... avec le tableau Rotation ... trié par jour de la semaine ... à valider ...

Très bien, ça marche mais juste pour 2015, quand je mets 2016 la rotation ne continu pas,

ça devrait me donner le premier jour du 2016 un "A".

Y-a-t-il un moyen de le faire pour n'importe quelle année.

Merci.

32rotation.xlsx (9.40 Ko)
Rechercher des sujets similaires à "affectation personnel rotation"