Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 VBA

olivier1984

XLDnaute Junior
Bonjour à tous chers experts VBA.

Je voudrais solliciter une aide sur le forum.

J'ai un fichier Excel VBA de gestion des techniciens de ma structure avec pour l'instant deux feuilles :
1) La feuille nommée "données" qui représente la base de données.
2) La feuille nommée "enregistrement".

La société dispose de 3 stations de travail pour les techniciens nommés respectivement PS07, PS08 et PS09 et une station de repos technique nommée "HOME".

Certains techniciens sont affectés sur l'une des stations pour une durée de 60 jours tandis que d'autres sont mis au repos durant ces mêmes 60 jours.
À la fin des 60 jours, chaque technicien qui était sur l'une des stations est remplacé par un autre technicien qui était en repos (station "HOME").

Je voudrais que dans la colonne nommée "Substitute Name" que j'ai déjà créée, on puisse créer une liste déroulante qui nous permettrait de sélectionner un technicien sur une liste regroupant UNIQUEMENT les techniciens qui étaient restés en repos pendant ces 60 jours (HOME).

Pour cela, je voudrais donc créer une macro qui pourra générer la liste de tous ceux qui étaient dans les différentes stations toutes confondues pendant les 60 jours, et la liste de ceux qui étaient de repos pendant cette même période de 60 jours.

Enfin, je voudrais créer un système qui pourra répéter cette rotation de façon continue c'est-à-dire
qui enregistrera les nouveaux arrivants sur les stations de travail exactement comme leurs prédécesseurs et recommencer la même manœuvre et vise versa.

Pièce jointe : Fichier Excel joint nommé "OPÉRATEUR-TECHNICIENS"
 

Pièces jointes

  • OPERATEURS - TECHNICIENS.xlsm
    158.1 KB · Affichages: 19

Gégé-45550

XLDnaute Accro
Bonjour,
Une proposition en PJ.
Cordialement,
 

Pièces jointes

  • OPERATEURS - TECHNICIENS1.xlsm
    124.6 KB · Affichages: 9

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @olivier1984 , @Gégé-45550 ,

Juste un petit rappel de deux points de la charte de XLD :

le premier article :


Un second point :

Il semblerait que votre fichier ne respecte pas la confidentialité des données (nom, prénom, profession).
 

olivier1984

XLDnaute Junior
Merci pour le rappel très cher.
Cependant il s'agit d'une vieille base de données datant de plus de 10 ans que j'utilise régulièrement pour faire des tests.
Ceci dit, je tiens acte et vous dis merci pour votre remarque et rappel.
Cordialement
 

olivier1984

XLDnaute Junior
Bonjour,
Une proposition en PJ.
Cordialement,
Merci très cher pour ta proposition et c'est exactement ça que je voulais et ça marche parfaitement.

Cependant, étant donné que les techniciens se relaient tous les 60 jours, comment gérer la continuité c'est-à-dire un système où ceux qui étaient en repos sont maintenant sur les stations et ceux qui étaient sur les stations sont en repos ?
En bref, comment faire pour gérer ces rotations tous les 60 jours durant l'année ?

Merci énormément pour toute proposition qui m'aiderait certainement à avancer dans ce travail.

Cordialement.
 

Gégé-45550

XLDnaute Accro
Bonjour,
Vous gérez une date de début et une date de fin de travail en station, il ne devrait pas être trop compliqué d'ajouter 1 jour à la date de fin pour obtenir celle du début du repos et 60 jours à cette même date de fin pour obtenir la date du dernier jour de repos, me semble-t-il, non ?
Cordialement,
 

jm.andryszak

XLDnaute Occasionnel
Bonjour
Voici une proposition qui semble convenir, je ne trouve plus d'anomalie, mais à voir…
Je prends comme hypothèse que le 17 juillet il y a des personnels en repos ou en station depuis 60 jours.
Pour tester je modifie les dates de début au 18 mai et fait les permutations avec la liste de validation de données en colonne o.
J'ai fait les test pour 3 personnels que j'ai créé ( en jaune), je paramètre leur date de début pour qu'ils arrivent à 60 jours et la permutation se fait bien en choisissant un personnel en repos depuis 60 jours.
En espérant avoir compris votre demande.
Fichier en PJ.
 

Pièces jointes

  • OPERATEURS - TECHNICIENS.xlsm
    125.1 KB · Affichages: 4

olivier1984

XLDnaute Junior
Merci encore pour votre intérêt à mon problème encore que votre raisonnement est très logique et je l'ai même déjà fait.

Cependant, mon véritable souci réside au niveau de la continuité et pour être plus explicite :

Tel que le tableau est structuré actuellement, ça fonctionne parfaitement mais uniquement pour une seule rotation c'est-à-dire on remplace ceux qui étaient dans les stations par ceux qui étaient au repos.

Mais comment alors gérer le sens inverse c'est-à-dire faire revenir dans les stations ceux qui étaient là premièrement et qui venaient d'être mis en repos à leur tour afin que la liste des remplaçants de la colonne "substitute name" contienne uniquement les noms de ces derniers cette fois-ci et non plus la première vague ?

Si vous avez une proposition à me faire n'hésitez surtout pas svp j'en ai urgemment besoin car ça me donne un vrai casse tête.

Exemple :
Dans le fichier joint à ce message, pour la période allant du 01/03/2024 au 30/04/2024, les techniciens (employé 1 à employé 30) sont dans les stations tandis que les techniciens (employé 31 à employé 60) sont en repos et dans la colonne "Substitute name" on retrouve uniquement les techniciens au repos à savoir les employés 31 à 60 qui remplaceront les premiers. À ce niveau tout est parfait.

Mais maintenant, comment faire l'inverse c'est-à-dire que les employés 1 à 30 qui sont actuellement au repos soient affectés à nouveau dans les stations de façon à ce que la colonne "substitute name" contiennent uniquement leurs noms ?

NB. J'ai aussi remarqué qu'avec la macro que vous avez paramétré, à chaque réouverture du fichier, il y'a destruction systématique de la validation des données de la colonne F ("Station") et je ne sais pas comment y remédier je suis tout le temps obliger de la refaire manuellement.

Cordialement.
 

Pièces jointes

  • OPERATEURS .xlsm
    93.3 KB · Affichages: 1

olivier1984

XLDnaute Junior
Merci pour le gros travail que vous avez fait sur ce fichier j'ai pu le constater à travers les lignes de codes que vous avez utilisé.

Ceci dit, j'ai bien peur que vous n'ayez pas bien compris le fonctionnement de mon fichier et de mon véritable souci que j'explique à nouveau.

La société a 3 stations de travail (PS07, PS07 et PS09) où les techniciens se relaient tous les 60 Jours.
Pendant ces mêmes 60 jours il y a d'autres techniciens qui sont en repos technique d'où la station (HOME) que j'ai dû supprimée et remplacé par la station (REPOS) pour mieux me faire comprendre.

le principe c'est qu'à la fin des 60 jours, tous les techniciens qui étaient sur les différentes stations sont remplacés par ceux qui étaient en repos d'où la colonne ("substitute name").
Il était donc question que cette colonne "substitute name" affiche uniquement les noms des techniciens qui étaient de repos pendant ces 60 jours, c'est le travail qu'un de nos confrères (GéGé 455550) a réussi à faire et que je remercie encore au passage.
La feuille "Enregistrement" tel qu'elle se présente actuellement fonctionne parfaitement tel je le voulais mais malheureusement ça ne fonctionne que pour une seule rotation.

Comment donc faire pour pouvoir gérer les rotations dans les deux sens : remplacer les techniciens dans les stations par ceux qui étaient de repos et ensuite remplacer maintenant ces derniers par les précédents et ainsi de suite...?

Au départ j'avais voulu le faire en créant une feuille nommée repos où je faisais les extractions de ceux en repos pour les affecter mais ça n'a pas pu marcher comme je le souhaitais.

En espérant donc que vous avez mieux compris mon problème, toute proposition quelle qu'elle soit sera la bienvenue.

Pour finir, j'ai vu votre travail sur la feuille repos qui est magnifique, mais ça ne cadrait pas avec le fonctionnement de l'entreprise qui est une période fixe de 60 jours au cours de laquelle les équipes de techniciens se relaient. L'erreur vient de moi car je n'ai pas bien renseigné les données avant de vous envoyer une copie et je présente toutes mes excuses.

À présent, je vous renvoie donc une autre copie du fichier avec les données qu'il faudra implémenter aux niveau des feuilles "Enregistrement" et "Extraction" que je laisse à votre appréciation pour une éventuelle assistance selon vos inspirations.

NB. J'ai aussi remarqué que la validation des données de la colonne F se détruit à chaque réouverture du fichier et j'ignore pourquoi et je suis obligé de la refaire à chaque fois.

NB. Vous pouvez aussi me faire une proposition totalement opposée à mon idée de base, l'important pour moi c'est de pouvoir gérer ces techniciens dans la continuité.

Je joint à mon message le fichier Excel test.

Cordialement
Fichier en PJ.
 

Pièces jointes

  • OPERATEURS .xlsm
    93.3 KB · Affichages: 1

olivier1984

XLDnaute Junior
Merci pour le gros travail que vous avez fait sur ce fichier j'ai pu le constater à travers les lignes de codes que vous avez utilisé.

Ceci dit, j'ai bien peur que vous n'ayez pas bien compris le fonctionnement de mon fichier et de mon véritable souci que j'explique à nouveau.

La société a 3 stations de travail (PS07, PS07 et PS09) où les techniciens se relaient tous les 60 Jours.
Pendant ces mêmes 60 jours il y a d'autres techniciens qui sont en repos technique d'où la station (HOME) que j'ai dû supprimée et remplacé par la station (REPOS) pour mieux me faire comprendre.

le principe c'est qu'à la fin des 60 jours, tous les techniciens qui étaient sur les différentes stations sont remplacés par ceux qui étaient en repos d'où la colonne ("substitute name").
Il était donc question que cette colonne "substitute name" affiche uniquement les noms des techniciens qui étaient de repos pendant ces 60 jours, c'est le travail qu'un de nos confrères (GéGé 455550) a réussi à faire et que je remercie encore au passage.
La feuille "Enregistrement" tel qu'elle se présente actuellement fonctionne parfaitement tel je le voulais mais malheureusement ça ne fonctionne que pour une seule rotation.

Comment donc faire pour pouvoir gérer les rotations dans les deux sens : remplacer les techniciens dans les stations par ceux qui étaient de repos et ensuite remplacer maintenant ces derniers par les précédents et ainsi de suite...?

Au départ j'avais voulu le faire en créant une feuille nommée repos où je faisais les extractions de ceux en repos pour les affecter mais ça n'a pas pu marcher comme je le souhaitais.

En espérant donc que vous avez mieux compris mon problème, toute proposition quelle qu'elle soit sera la bienvenue.

Pour finir, j'ai vu votre travail sur la feuille repos qui est magnifique, mais ça ne cadrait pas avec le fonctionnement de l'entreprise qui est une période fixe de 60 jours au cours de laquelle les équipes de techniciens se relaient. L'erreur vient de moi car je n'ai pas bien renseigné les données avant de vous envoyer une copie et je présente toutes mes excuses.

À présent, je vous renvoie donc une autre copie du fichier avec les données qu'il faudra implémenter aux niveau des feuilles "Enregistrement" et "Extraction" que je laisse à votre appréciation pour une éventuelle assistance selon vos inspirations.

NB. J'ai aussi remarqué que la validation des données de la colonne F se détruit à chaque réouverture du fichier et j'ignore pourquoi et je suis obligé de la refaire à chaque fois.

NB. Vous pouvez aussi me faire une proposition totalement opposée à mon idée de base, l'important pour moi c'est de pouvoir gérer ces techniciens dans la continuité.

Je joint à mon message le fichier Excel test.

Cordialement
 

Pièces jointes

  • OPERATEURS .xlsm
    93.3 KB · Affichages: 0

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Prop en pj


ps : tu devrais nettoyer la liste de tes Nom car ça fait appel à au moins 4 fichiers différents, sans parler des Nom en #REF!
 

Pièces jointes

  • OPERATEURS - TECHNICIENS.xlsm
    96.7 KB · Affichages: 7
Dernière édition:

Discussions similaires

Réponses
5
Affichages
369
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…