albuqs
XLDnaute Nouveau
Bonsoir à tous,
Première contribution de ma part et - comme c'est surprenant - je viens faire appel à cette communauté qui m'a déjà souvent sorti de la panade sans même le savoir (grâce soit rendue à l'outil de recherche).
Dans le cadre d'un projet visant à faciliter le pilotage de la planification du personnel d'une structure, je développe un classeur qui, étant destiné à des usagers aux compétences bureautiques limitées mais néanmoins investis de solides responsabilités, se veut aussi user interface friendly que possible.
Cette configuration me pose des contraintes d'architecture (notamment le fait de ne pas pouvoir convertir la plage de saisie de données en tableau structuré en raison des dates qui sont en entête et seraient par conséquent converties en texte, ce qui ne m'arrange pas et ne me facilite pas la vie.... Mais là n'est pas le propos vu que j'ai pu trouver des solutions de contournement pour exploiter les données.
Pour résumer le problème, chaque ligne correspond à une personne, chaque colonne correspond à un jour, à l'intersection d'une ligne et d'une colonne l'utilisateur inscrit un code alphanumérique simple servant à identifier le type de prestation fournie par la personne. En gros mes données sur les personnes sont sous forme de tableau structuré, en revanche ma plage de saisie, qui est accolée, n'est qu'une plage nommée. Des codes spécifiques servent à identifier les jours de repos ou de vacances, une case vide ainsi qu'un certain nombre d'autres codes correspondent à des jours travaillés.
Mon souhait serait d'identifier le nombre de jours de travails consécutifs afin de pouvoir exploiter ce dernier par la suite.
Mon approche se heurte à la notion de "bornage" à laquelle je fais référence en objet, je m'explique:
En considérant la série suivante (T = travail, R = repos) T T R R T T T T R R T T T T T R R
En l'état actuel j'étais parti de l'idée de considérer une plage J-3 à J+3 afin d'identifier sur 7 jours combien de jours étaient effectivement travaillés. Pour ce faire j'ai eu la brillante idée de travailler sur la base d'un 7 - somme(nb(tous les codes des jours de congés). Cette approche me renvoie effectivement le nombre de jours travaillés sur la période définie, l'informatique fais donc ce que je lui demande... MAIS, dans la série présentée ci-dessus:
T T R R T T T T R R T T T T T R R
Le résultat renvoyé pour le jour marqué en gras est, logiquement, de: 5
Mon souhait serait que le résultat renvoyé soit de 4, sachant que la série est interrompue par deux jours de repos, lesquels sont certes salvateurs pour son destinataire mais peu pratiques dans l'élaboration de mon projet.
Ci-joint un classeur schématisant l'ensemble.
A l'échelle 1:1 des validations de données et des MFC sont appliquées, des userform sont présents, un nombre incalculable -quoique- de formules et datas en tous genre sont extraites, tout fonctionne bien jusque là....
L'objectif technique étant exposé, je passe rapidement sur l'objectif final utilisateur: après traitement du résultat, offrir à l'utilisateur un indice (probablement un smiley content, moyen content, pas content, pas content du tout) résultant de l'évaluation du nombre de jours travaillés entre deux congés ET de pouvoir exploiter les données brutes (pas de soucis pour tout ça, ma requête porte donc uniquement sur la problématique exposée ci-dessus)
Dans mon approche à base de si, de sommes et de nb j'évaluais chaque jour dans une réplique de la plage de saisie calendaire.
Bref, vous l'aurez compris, l'architecture même du fichier ne me simplifie pas la vie, et comme dirait l'autre: plus c'est simple pour les gens qui utilisent, plus c'est compliqué pour ceux qui développent.
Cet indice n'est jamais qu'une des nombreuses données qui seront extraites du fichier, mais pour le solde, jusque là tout va bien.
Ouvert à toutes solutions!
Je vous transmets volontiers la formule utilisée jusque là, mais sans intérêt à mon sens puisque ne répondant pas aux besoin. Probablement qu'une approche VBA s'impose (?).
En bon franco-vbdilletantiste ça donnerait quelque chose du genre:
Depuis activecell fais de l’offset à gauche jusqu’à rencontrer X, Y ou Z et ensuite refais la même à droite jusqu’à rencontrer X, Y, Z et finalement dis moi combien de cellules t’as parcouru en tout entre les deux bornes.
Mais même si ça ne renvoie le résultat pour une cellule donnée, je peux m’imaginer qu’il va falloir faire une boucle pour qu’il parcoure un range déterminé et rende compte de chaque résultat pour qu’ils soit inscrits en dur…. Restera encore à faire en sorte que ça s’actualise lorsqu’une valeur change dans la plage de référence…. Bref ça dépasse allègrement mes compétences en VBA je l’admets….
Au plaisir de vous lire,
Première contribution de ma part et - comme c'est surprenant - je viens faire appel à cette communauté qui m'a déjà souvent sorti de la panade sans même le savoir (grâce soit rendue à l'outil de recherche).
Dans le cadre d'un projet visant à faciliter le pilotage de la planification du personnel d'une structure, je développe un classeur qui, étant destiné à des usagers aux compétences bureautiques limitées mais néanmoins investis de solides responsabilités, se veut aussi user interface friendly que possible.
Cette configuration me pose des contraintes d'architecture (notamment le fait de ne pas pouvoir convertir la plage de saisie de données en tableau structuré en raison des dates qui sont en entête et seraient par conséquent converties en texte, ce qui ne m'arrange pas et ne me facilite pas la vie.... Mais là n'est pas le propos vu que j'ai pu trouver des solutions de contournement pour exploiter les données.
Pour résumer le problème, chaque ligne correspond à une personne, chaque colonne correspond à un jour, à l'intersection d'une ligne et d'une colonne l'utilisateur inscrit un code alphanumérique simple servant à identifier le type de prestation fournie par la personne. En gros mes données sur les personnes sont sous forme de tableau structuré, en revanche ma plage de saisie, qui est accolée, n'est qu'une plage nommée. Des codes spécifiques servent à identifier les jours de repos ou de vacances, une case vide ainsi qu'un certain nombre d'autres codes correspondent à des jours travaillés.
Mon souhait serait d'identifier le nombre de jours de travails consécutifs afin de pouvoir exploiter ce dernier par la suite.
Mon approche se heurte à la notion de "bornage" à laquelle je fais référence en objet, je m'explique:
En considérant la série suivante (T = travail, R = repos) T T R R T T T T R R T T T T T R R
En l'état actuel j'étais parti de l'idée de considérer une plage J-3 à J+3 afin d'identifier sur 7 jours combien de jours étaient effectivement travaillés. Pour ce faire j'ai eu la brillante idée de travailler sur la base d'un 7 - somme(nb(tous les codes des jours de congés). Cette approche me renvoie effectivement le nombre de jours travaillés sur la période définie, l'informatique fais donc ce que je lui demande... MAIS, dans la série présentée ci-dessus:
T T R R T T T T R R T T T T T R R
Le résultat renvoyé pour le jour marqué en gras est, logiquement, de: 5
Mon souhait serait que le résultat renvoyé soit de 4, sachant que la série est interrompue par deux jours de repos, lesquels sont certes salvateurs pour son destinataire mais peu pratiques dans l'élaboration de mon projet.
Ci-joint un classeur schématisant l'ensemble.
A l'échelle 1:1 des validations de données et des MFC sont appliquées, des userform sont présents, un nombre incalculable -quoique- de formules et datas en tous genre sont extraites, tout fonctionne bien jusque là....
L'objectif technique étant exposé, je passe rapidement sur l'objectif final utilisateur: après traitement du résultat, offrir à l'utilisateur un indice (probablement un smiley content, moyen content, pas content, pas content du tout) résultant de l'évaluation du nombre de jours travaillés entre deux congés ET de pouvoir exploiter les données brutes (pas de soucis pour tout ça, ma requête porte donc uniquement sur la problématique exposée ci-dessus)
Dans mon approche à base de si, de sommes et de nb j'évaluais chaque jour dans une réplique de la plage de saisie calendaire.
Bref, vous l'aurez compris, l'architecture même du fichier ne me simplifie pas la vie, et comme dirait l'autre: plus c'est simple pour les gens qui utilisent, plus c'est compliqué pour ceux qui développent.
Cet indice n'est jamais qu'une des nombreuses données qui seront extraites du fichier, mais pour le solde, jusque là tout va bien.
Ouvert à toutes solutions!
Je vous transmets volontiers la formule utilisée jusque là, mais sans intérêt à mon sens puisque ne répondant pas aux besoin. Probablement qu'une approche VBA s'impose (?).
En bon franco-vbdilletantiste ça donnerait quelque chose du genre:
Depuis activecell fais de l’offset à gauche jusqu’à rencontrer X, Y ou Z et ensuite refais la même à droite jusqu’à rencontrer X, Y, Z et finalement dis moi combien de cellules t’as parcouru en tout entre les deux bornes.
Mais même si ça ne renvoie le résultat pour une cellule donnée, je peux m’imaginer qu’il va falloir faire une boucle pour qu’il parcoure un range déterminé et rende compte de chaque résultat pour qu’ils soit inscrits en dur…. Restera encore à faire en sorte que ça s’actualise lorsqu’une valeur change dans la plage de référence…. Bref ça dépasse allègrement mes compétences en VBA je l’admets….
Au plaisir de vous lire,
Pièces jointes
Dernière édition: