Fichier pour organisation planning automatique

Bonjour au forum,

Je viens vous solliciter une nouvelle fois pour m'aider dans la création d'un fichier relativement compliqué (pour moi évidemment...).

Travaillant en milieu hospitalier avec horaires 24h/24h, mon équipe échange régulièrement leurs WE entre eux, et la gestion du planning est extremement complexe...

J'aimerais donc créer un fichier permettant au collaborateur souhaitant échanger un de ses WE (en selectionnant le numéro de semaine dans la liste déroulante, colonne B), de visualiser directement avec quel(s) autre(s) collaborateur(s) il pourrait échanger ce WE (ce résultat devra s'afficher dans la colonne C). La règle pour cela est que cet autre (ou ces autres) collaborateur(s) ne

travaille(nt) ni le WE d'avant, ni le WE d'après, afin d'éviter de travailler 2 WE de suite.

Idéalement, j'aimerais que dans la colonne E s'affiche le(s) numéro(s) de semaine des WE échangeables pour ce collaborateur (que l'on selectionnera dans la colonne D parmi les résultats de la colonne C).

Exemple :

Collaborateur 1 travaille le WE de la semaine 3 mais souhaite changer ce WE. Il va sur le fichier, séléctionne "Semaine 3" dans la liste déroulante (colonne B) sur la ligne correspondant à Collaborateur 1.

Dans la colonne C s'affiche le nom des collaborateurs ne travaillant ni la semaine 1, ni la semaine 2, ni la semaine 3.

Dans la colonne D il séléctionne un des collaborateurs susceptibles de changer le WE (donc un des résultats de la colonne C), et suivant le choix du collaborateur selectionné, la colonne E affiche avec quel(s) WE l'échange peut se faire (en affichant le numéro de semaine).

Dans la feuille "BD", tout les WE seront renseignés, j'ai volontairement rempli uniquement ceux de 4 collaborateurs pour l'exemple...

Voilà...

Est-ce complètement illusoir de créer un tel fichier Excel ou aurais-je une lueur d'espoir ?

Un énorme merci d'avance pour ceux qui auront le courage de tenter de m'aider...

Cordialement,

Nico.

69echange-we.xlsx (14.14 Ko)

Bonjour,

Tu sembles être au tout départ de ton projet de Bourse d'échange ...

As-tu déjà arrêté la structure de ton fichier ...ou la codification des Week-Ends???

Bonjour James007,

Merci de ta réponse

En effet, je venais de le créer, la nuit au boulot étant calme...

Je n'ai encore définit aucune structure au fichier, ni à la codification des WE, pour la simple et bonne raison que je ne connais ni maîtrise toutes les possibilités qu'offre Excel... Je sais simplement que certaines personnes ici réalisent des choses incroyables, alors je tente ma chance...

Pense-tu que cela est réalisable ?

(Excuse moi d'ores et déjà de mon absence pour une partie de la journée, je vais me coucher, car après ces 12h de garde, je ne sais plus où j'habite comme on dit.... )

Re,

Avant tu n'ailles te coucher ... avec Excel ... tout est possible ...

Bon Repos ...

il paraît, mais mes compétences restent limités

C'est pour cela que je m'adresse à vous

Si tu as une idée, un début de code, des conseils, je prends !!

Bonne journée à toi

Re,

A titre purement indicatif ... ... à tester ...un petit bout de code pour l'échange ...à proprement parler ...

Sub Echanger2WeekEnds()

Dim Rng1 As Range, Rng2 As Range
Dim arr1 As Variant, arr2 As Variant

Set Rng1 = Application.Selection
Set Rng1 = Application.InputBox("Week End 1:", "Echange", Rng1.Address, Type:=8)
Set Rng2 = Application.InputBox("Week End 2:", "Echange", Type:=8)
Application.ScreenUpdating = False
  arr1 = Rng1.Value
  arr2 = Rng2.Value
  Rng1.Value = arr2
  Rng2.Value = arr1
Application.ScreenUpdating = True

End Sub

Mais le plus important est de correctement structurer le fichier initial ...

Re James007,

Merci pour ton aide, je teste cela dès mon arrivée au taf à 22h, n'ayant pas excel à domicile.

Qu'entends-tu par structurer le fichier initial, que je m'y mette cette nuit ?

Nrev74 a écrit :

Re James007,

Merci pour ton aide, je teste cela dès mon arrivée au taf à 22h, n'ayant pas excel à domicile.

Qu'entends-tu par structurer le fichier initial, que je m'y mette cette nuit ?

Re,

Je n'ai aucune idée de tes contraintes ...du nombre total de collaborateurs, ni les règles à appliquer, ni de ton objectif final, en termes d'analyse ...

De plus, tu parles de week-ends ... donc deux jours ... est-ce-un bloc uniforme ??? ou les collaborateurs peuvent -ils s'échanger la moitié d'un week-end ...??? Sans compter que, peut-être, ils peuvent vouloir n'offrir à l'échange que le Samedi ou le Dimanche ...

Toutes ces questions (et certainement d'autres...) sont des inconnues ... qu'il te faut clarifier ... pour ton projet ...

Ci-joint ... une première inspiration ( très personnelle ) de codification ... que je te soumets pour étude ...

31test-nrev74.xlsm (17.53 Ko)

Re James007,

J'ai regardé ton fichier, et je te remercie pour ce que tu as fais.

Cependant, ce n'est pas exactement ce que je souhaiterais

Si tu reprends mon fichier initial (Echange WE), j'aimerais que le collaborateur utilise la feuille "WE", la feuille "BD" ne me servirait qu'à moi, pour rentrer les WE tels qu'ils sont prévus à la base.

Quand le collaborateur selectionne le numéro de semaine comprenant le WE qu'il désire échanger (dans la cellule de la colonne B de la feuille "WE" de mon fichier initial), la colonne C indiquerait tout les noms des collègues susceptibles de changer, avec comme règle que celui-ci ne doit pas travailler ce même WE évidemment, ni celui de la semaine précédante, ni la suivante.

J'aimerais que cette vérification soit "automatique", selon les données que je remplirai dans la feuille "BD" de mon fichier initial.

Ensuite, et ça ce serait la cerise sur le gâteau, je souhaiterais qu'une fois la liste des collaborateurs pouvant échanger le WE soit affiché dans la cellule de la colonne C, le collaborateur puisse selectionner un de ces noms (donc via la cellule de la colonne D), et que la cellule de la colonne E affiche quelle numéro de semaine ce collaborateur peut travailler à la place de son collègue avec qui il va échanger, selon les mêmes règles (donc pas de travail WE d'avant, ni celui-ci, ni celui d'après).

Pour répondre à tes questions, le nombre de collaborateur est de 22, mais ça peut varier avec quelque fois des CDD.

Pour les règles, ce sont simplement celles cités plus haut, le collaborateur qui change ne doit ni travailler le WE d'avant, ni celui d'après, ni le même WE.

Pour l'indivisibilité du WE, je préfère pour l'instant considérer le WE comme un bloc, et ne pas différencier les 2 jours, c'est déjà bien assez compliqué ! Mais l'idéal serait de pouvoir différencier oui.

J'espère avoir été un peu plus clair sur mon projet....

Perso, j'en ai déjà mal à la tête ! Alors merci de ton aide !!

Nico.

Re,

J'ai modifié mon fichier initial pour mieux saisir mon projet, je pense que ce sera beaucoup plus clair.

Je n'ai aucune idée de la faisabilité d'un tel code, je n'ai quasi aucune base VBA...

N'hésite pas à me dire si je dois carrément oublier l'idée !

Pour information, la signification des W1, W2 et W3 sont simplement 3 horaires différents, donc pas d'importance.

Excellente journée à toi.

Nico.

32echangewe-v1.xlsx (16.15 Ko)

Bonour Nico,

Je te remercie pour toutes les explications complémentaires qui permettent de mieux comprendre tes contraintes ...

Cependant, techniquement concernant l'identification du week-end ... je crois que tu as besoin de te construire un identifiant unique ...sinon ...par exemple tous tes W1 de ta feuille BD ne font en fait qu'un ...

Bonjour le fil, bonjour Nrev74

Voici un premier jet avec ce que j'ai compris

ATTENTION ! je rencontre un problème après création de la liste de validation de données

à l'a réouverture du classeur = contenu irrécupérable

A+

Bonjour James007,

Alors peut-on imaginer de faire une feuille par collaborateur à ce moment là... ?

Bonjour Nrev74, Bonjour Bruno

Effectivement, tu peux avoir un onglet par collaborateur ...

Tu vois bien ... en tout cas ... que la question de la structure de ton fichier est primordiale ...

Car, c'est bien à partir de cette structure de base, que tu pourras ou pas , ensuite, bâtir ton fichier avec les caractéristiques dont tu as besoin pour te faciliter la vie ...

Bonjour Bruno, bonjour James,

Merci à vous 2 pour votre aide

Comme hier, c'est l'heure pour moi d'aller dormir, je regarderai tout ceci en reprenant le travail ce soir 22h et ne manquerais pas de vous faire un feedback

Merci à vous !

Bonne journée.

Nico.

Re,

Bon repos ... pas de problème pour le suivi ... à demain ...

Bonjour BrunoM45, bonjour James007,

Le fichier que tu m'as donné BrunoM45 correspond exactement à ce que je souhaitais... !

C'est juste PARFAIT !

J'ai pu le modifier cette nuit, avec le nom de mes collaborateurs et en remplissant la feuille BD, et cela fonctionne parfaitement.

J'ai également eu l'erreur dont tu parlais, mais elle a disparu après que j'ai effectué les modifications... Mystère...

J'ai encore beaucoup d'améliorations (ou plutôt de fonctionnalités) à apporter, mais cela viendra au fur et à mesure.

Vraiment un tout grand merci à vous deux pour vous être autant investi dans mon projet, je vous en suis extrêmement reconnaissant !!

Si vous passez par la haute-savoie un de ces jours, n'hésitez pas à me dire que je vous offre une bonne petite bière (ou un bon verre de vin rouge... ).

Excellente journée à vous et encore merci

Nico.


Ah ben dans l'enthousiasme, j'ai oublié de vous poser les petites questions qui me restaient dans la tête...

J'étais parti sur une année à 52 semaines, sans penser que certaines années, il y en a 53 (comme cette année)...

Donc, 1ère question :

Comment et où puis-je modifier ce paramètre dans le code ?

De même pour le nombre de collaborateurs, cette année nous sommes 21 dans l'équipe, j'ai donc supprimé les 4 dernières colonnes.

D'où ma 2ième question :

Si dans le courant de l'année un autre collaborateur est engagé, que dois-je modifier (mis à part rajouter une colonne le concernant à la suite) ?

Merci à vous

Nico.

Bonjour à tous,

Dans la mesure où la solution de Bruno fonctionne super bien ...

Je te conseille :

1. De ne pas supprimer les colonnes de collaborateurs (jusqu'à 25 ) ... il suffit d'utiliser ce dont tu as besoin ...

2. Ajouter la semaine 53 et faire Ctrl+F3 pour augmenter simplement la liste qui s'appelle Semaines d'une ligne ...

Voilou ...

Salut Nrev74

Nrev74 a écrit :

Le fichier que tu m'as donné BrunoM45 correspond exactement à ce que je souhaitais... !

C'est juste PARFAIT !

Tant mieux, j'en suis ravi

Nrev74 a écrit :

J'ai également eu l'erreur dont tu parlais, mais elle a disparu après que j'ai effectué les modifications... Mystère...

Cette erreur ce produit lors de la création de la liste de validation en colonne D

Nrev74 a écrit :

Vraiment un tout grand merci à vous deux pour vous être autant investi dans mon projet, je vous en suis extrêmement reconnaissant !!

De rien, ce forum est là (nous sommes là) pour aider ceux qui en ont besoin

Nrev74 a écrit :

Si vous passez par la haute-savoie un de ces jours, n'hésitez pas à me dire que je vous offre une bonne petite bière (ou un bon verre de vin rouge... ).

Perso, je n'y manquera pas

Nrev74 a écrit :

J'étais parti sur une année à 52 semaines, sans penser que certaines années, il y en a 53 (comme cette année)...

Donc, 1ère question :

Comment et où puis-je modifier ce paramètre dans le code ?

Il est vrai que j'ai codé ce paramètre en dur, mais on peut le modifier

Voici le code à remplacer

Sub MaJColonneE(LigSel As Long, LibSem As String, ChoixCol As String)
  Dim DLigBdD As Long, NumSem As Integer, LigBdD As Long, LibCol As String
  Dim Col1 As Long, Col2 As Long, FlagWE As Boolean
  Dim Lib As String
  ' Récupérer le numéro de semaine pour déterminer les lignes à scruter
  NumSem = Mid(LibSem, InStr(1, LibSem, " ") + 1)
  ' Définir la feuille contenant la base
  Set ShtBdD = Sheets("BD")
  ' Définir le numéro de la dernière ligne de la BdD
  DLigBdD = ShtBdD.Range("A" & Rows.Count).End(xlUp).Row
  ' Récupérer les numéros de colonnes à comparer
  LibCol = Sheets("WE").Range("A" & LigSel).Value
  Col1 = ShtBdD.Rows("1:1").Find(What:=LibCol).Column
  Col2 = ShtBdD.Rows("1:1").Find(What:=ChoixCol).Column
  FlagWE = False
  ' Pour chaque ligne
  For LigBdD = 2 To DLigBdD
    ' Si le collaborateur initial travaille, on continue
    If ShtBdD.Cells(LigBdD, Col1) <> "" Then
      FlagWE = True: GoTo Suite
    Else
      FlagWE = False
    End If
    ' Si le collaborateur choisi travaille et que le FLAG est vrai
    If ShtBdD.Cells(LigBdD, Col2) <> "" And FlagWE = True Then
      FlagWE = False: GoTo Suite
    End If
    ' Si le collaborateur choisi travaille
    If ShtBdD.Cells(LigBdD, Col2) <> "" Then
      ' Vérifie que la semaine avant ou après est vide
      If ShtBdD.Cells(LigBdD - 1, Col1) = "" _
         And ShtBdD.Cells(LigBdD, Col1) = "" _
         And ShtBdD.Cells(LigBdD + 1, Col1) = "" Then
        ' Définir la liste des Semaines OK
        Lib = Lib & ShtBdD.Cells(LigBdD, 1) & ", "
      End If
    End If
Suite:
  Next LigBdD
  ' Supprimer la dernière virgule
  If Lib <> "" Then Lib = Left(Lib, Len(Lib) - 2)
  ' Inscrire la liste trouvée
  Sheets("WE").Range("E" & LigSel).Value = Lib
End Sub
Nrev74 a écrit :

De même pour le nombre de collaborateurs, cette année nous sommes 21 dans l'équipe, j'ai donc supprimé les 4 dernières colonnes.

D'où ma 2ième question :

Si dans le courant de l'année un autre collaborateur est engagé, que dois-je modifier (mis à part rajouter une colonne le concernant à la suite) ?

Ca, c'est géré, toujours avec les collaborateur dont le nombre peut changer

J'utilise ce code pour connaitre la dernière colonne

  ' Dernière colonne de la BdD
  DCol = ShtBdD.Cells(1, Columns.Count).End(xlToLeft).Column

Au plaisir

Bonjour James007, BrunoM45,

Merci pour ce nouveau code, il fonctionne parfaitement.

J'ai modifié la liste "Semaines" pour ajouter la 53 et cela fonctionne très bien

Je crois que j'ai tout ce dont j'avais besoin pour ce fichier, il va me (et à toute l'équipe également) simplifier grandement la vie !!

Donc vraiment un très grand merci, c'est fou ce dont vous êtes capable de réaliser avec ce logiciel

Je me laisse la nuit encore pour travailler sur ce fichier, au cas où me viendrais d'autres questions...

Excellente journée à vous !

PS : la bière est déjà au frais et le vin dans sa cave

Nico.

Rechercher des sujets similaires à "fichier organisation planning automatique"