Ingrémenter une liste déroulante sous condition

creolia

XLDnaute Impliqué
Bonjour à tous

Je viens vous demander de l'aide sur un projet assez complexe pour moi.j'utilise pour ma petite équipe de 80 agents un planning en ligne de disponibilité celui ci extrait en CSV les donnés dans un tableau excel il se présente comme ceci

Agent1 doit mettre ses dispos matin (M) après-midi (A) et Nuit (N) suivant les date

sur ma feuille de garde je souhaiterais avoir des menu déroulant avec uniquement les noms de ce qui on mis leur dispo dans la colonne concerné

Exemple: Agent1 le 1er du mois à mis disponible Matin(M) et Après-midi (A)
dans ma feuille Astreinte apparais son nom dans la liste déroulant du 1er du mois son nom colonne Matin et Après midi

es ce possible svp de préférence par formule autrement par macro sa me conviens aussi

vous verrez la base de donnée n'est pas top en terme de lecture matin après midi et nuit apparais pas même si on devine bien à laquelle elle correspond mais sa je peut pas changer c'est extraction en CSV du Site qui est ainsi.



je vous remercie par avance de votre aide
 

Pièces jointes

  • liste.xlsx
    12.8 KB · Affichages: 50
  • liste.xlsx
    12.8 KB · Affichages: 43

Modeste

XLDnaute Barbatruc
Re : Ingrémenter une liste déroulante sous condition

Bonjour creolia,

Une solution par macro (pas d'autre idée :eek:)
En feuille BDD, les noms des agents doivent être recopiés sur chaque ligne, en colonne A. En feuille Astreinte, ligne 1, les "codes" doivent être indiqués.
La macro se déclenche au changement de sélection dans la feuille Astreinte


... à tester ... (il y a sans aucun doute des améliorations à apporter ... ou des choses que j'ai mal comprises!)
 

Pièces jointes

  • Validations par macro (creolia).xlsm
    23.9 KB · Affichages: 51

creolia

XLDnaute Impliqué
Re : Ingrémenter une liste déroulante sous condition

Bonjour modeste je te remercie pour ton aide c'est exactement sa dommage pour le fais d’incrémenter a chaque fois les noms mais je vais voir si il y a pas une solution pour sa un grand merci a toi
 

Modeste

XLDnaute Barbatruc
Re : Ingrémenter une liste déroulante sous condition

Re,

Il y a sans doute moyen de se passer de la recopie des noms, si tu as toujours 3 lignes pour chaque personne (une pour les "M", la deuxième pour les "A" et la dernière pour les "N")
 

Modeste

XLDnaute Barbatruc
Re : Ingrémenter une liste déroulante sous condition

oui c'est toujours formater ainsi le nom et les deux cellule vide je regarde la macro voir ci je peut pas renvoyer a la cellule du dessus

Une solution ci-dessous:
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [B3:D17]) Is Nothing Then
    If Target.Count > 1 Then Exit Sub
    Set liste = CreateObject("scripting.dictionary")
    With Sheets("BDD")
        For Each c In .[B3:B20].Offset(0, Cells(Target.Row, 1) - 1)
            If c = Cells(1, Target.Column) Then liste(.Cells(c.Row - (Application.Match(c, Array("M", "A", "N"), 0) - 1), 1).Value) = ""
        Next c
        For Each k In liste.keys: ch = ch & k & ",": Next k
        If Len(ch) > 0 Then ch = Mid(ch, 1, Len(ch) - 1)
        Target.Validation.Modify Formula1:=ch
    End With
End If
End Sub
 

creolia

XLDnaute Impliqué
Re : Ingrémenter une liste déroulante sous condition

Re Modeste je te remercie pour ton code qui fonctionne parfaitement

Puis je abuser un peut de tes compétences?

en fait j’essaie de mettre en application tous tes conseils et exemple sur ma vrais feuille de garde (onglet garde) mais la je bloque car les dates ne se suivent pas

je sais j'abuse mais j'ai peur de pas pouvoir adapter ta macro au projet peut tu me montrer juste l'exemple sur les deux premier jour et je me débrouillerais ensuite merci
 

Pièces jointes

  • Validations par macro (creolia)-1Beta.xlsm
    33.2 KB · Affichages: 51

Modeste

XLDnaute Barbatruc
Re : Ingrémenter une liste déroulante sous condition

Bonsoir creolia,

j'ai peur de pas pouvoir adapter ta macro au projet
C'est vrai que la situation est sensiblement différente dans ce fichier et celui que tu avais présenté initialement :eek:

Une ligne, en feuille Astreinte, correspondait à un jour ... ce n'est plus du tout le cas ici! La plage de cellules était "d'un seul tenant", elle est maintenant "saucissonnée" en autant de plages plus petites, avec des titres et des cellules vides!
Enfin, il y a côte-à-côte, le tableau des gardes et des astreintes ... ce qui complique encore singulièrement la donne (puisque je présume qu'il faudra veiller à ce que l'agent x ne puisse être choisi pour une astreinte, s'il est déjà de garde)???

... ou alors m'abuserais-je moi-même ;)

Si tu peux répondre à la dernière question et garantir que la structure actuelle est le reflet de la situation, j'y regarderai (tu m'excuseras si j'attends cette double confirmation :p)


PS:
peut-on au moins modifier les "noms" en colonne A de la feuille Garde, pour distinguer les 3 EQ/CE, identiques pour chaque jour (exemple pris tout à fait au hasard: EQ/CE1, EQ/CE2 et EQ/CE3)

PS bis: la valeur figurant en A20 ne saurait en aucun cas être considérée comme une date! On a le droit de proposer plus simple, pour la création de ces dates?

PS ter: au passage, contrairement à ce que voudrait faire croire la cellule B2, le 2 janvier n'était pas du tout un lundi! :confused:
 
Dernière édition:

creolia

XLDnaute Impliqué
Re : Ingrémenter une liste déroulante sous condition

Bonsoir modeste effectivement dans l’idéal fraudais que l'astreinte figure pas dans les garde la structure est exactement cela.
oui ont peut modifier le titre des colonnes en A sans problème

la colonne des date j'ai fais ainsi car je voulais juste en changeant la période des dates cela se fais automatiquement

pour ta dernière remarque j’avoue j'ai pas regarder vraiment les date plutôt respecter la semaine

tu pense que c'est faisable
 

Modeste

XLDnaute Barbatruc
Re : Ingrémenter une liste déroulante sous condition

Salut,

Je n'en ferai sans doute pas beaucoup plus ce soir:
- Modifié l'affichage du jour en B2 (se fait par formule et supprimé la validation)
- Calculé les 7 dates en colonne A (ce sont de vraies dates à présent, mais elles se calculent toujours en fonction des éléments sélectionnés en ligne 2)
- remplacé en feuille BDD, les n° de jours en ligne 2 par des dates
- je ne me suis occupé que des colonnes avec les Gardes, pas des Astreintes. Dans la réalité, tu fixeras toujours les uns avant les autres (si oui, dans quel ordre)? ... ou ça variera? Je verrai plus tard si j'ai des idées :rolleyes:

Teste déjà la pièce jointe pour vérifier si je n'ai pas pris trop de libertés :eek:
 

Pièces jointes

  • Validations par macro (creolia)-1BetaV2.xlsm
    33.6 KB · Affichages: 47

creolia

XLDnaute Impliqué
Re : Ingrémenter une liste déroulante sous condition

re

j'ai regarder la pièce jointe c'est parfait tu impressionne là
pour les astreintes et garde c'est pas toujours dans cette ordre des fois ont met des astreintes avant les garde mais au pire on peut s'obliger a faire en priorité les gardes apres les astreinte

en tous cas je tenais a te remercier tu va me faire gagner de précieuse heures à automatiser cela car avant c'etait chercher agent pas agent dispo par dispo et erreur de ligne

grand merci modeste
 

Modeste

XLDnaute Barbatruc
Re : Ingrémenter une liste déroulante sous condition

Bonjour,

J'ai l'impression d'avoir mis le doigt dans un engrenage et de m'être fait happer ;)

Une version où les validations tiennent compte des agents déjà renseignés (on peut faire les Gardes avant les Astreintes ou vice-versa)
J'ai défusionné les cellules "Chef de groupe" du tableau Astreintes, parce sinon, ça devenait encore plus compliqué!

La macro ne tient pas compte pour un jour précis et dans la même tranche horaire, des agents déjà sélectionnés (on peut donc affecter le même agent à 2 postes le matin, par exemple). Je te laisse le soin de "dépatouiller", tester ... et voir si tu en as besoin!?



[Edit:] me suis aperçu que toutes les cellules des Chefs de groupe n'étaient pas défusionnées :eek:
J'en ai profité pour faire en sorte que les agents affectés à un poste ne puissent plus l'être dans la même plage horaire.
Nouvelle version du fichier jointe ... à tester en long, en large et en travers!
 

Pièces jointes

  • Validations par macro (creolia)-1BetaV3.xlsm
    36.3 KB · Affichages: 43
Dernière édition:

creolia

XLDnaute Impliqué
Re : Ingrémenter une liste déroulante sous condition

Bonsoir cher modeste dessoler je rentre a peine de ma formation le travail que ta fait est génial dés demain je m’attelle à regarder tous en détail et surtout modifier les autres case un grand merci je te tien au courant pour tout ce bon travail que dis je extraordinaire :eek:
bonne soirée a toi
 

creolia

XLDnaute Impliqué
Re : Ingrémenter une liste déroulante sous condition

Bonjour modeste c'est juste pour te remercier pour tout ton aide j'ai put tout adapter à mon fichier sa ma pris un peut de temps pour tout comprendre mais c'est bon tous est ok un grand grand merci à toi à trés bientot
 

creolia

XLDnaute Impliqué
Re : Ingrémenter une liste déroulante sous condition

Bonjour modeste bonjour à tous j'aurais besoin une aide pour une petite modification

pour des raison de longueur de nom de certain pompier j'ai appliquer une formule dans la base de donnée pour avoir uniquement le nom et la première lettre du prénom en colonne AH.

peut on modifier la macro pour que la liste nom soit en AH et non en A svp merci.
 

Pièces jointes

  • Copie de Validations par macro (creolia)-1BetaV3.xlsm
    37.2 KB · Affichages: 46

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 327
Membres
102 862
dernier inscrit
Emma35400