Controle vacance 2023

Hello Tout les mondes.

J’espère Que vous allez tous bien

@FFO , J’ai essayé de le faire moi-même en modifiant le code en fonction de ce que je recherche mais encore trop complexe pour moi.

J’aurais besoin de savoir quel collaborateur à poser plus que 15 jours consécutifs. ( « V » et « v »)

J’ai essayé en me disant que si je changeais au-delà des 8 jours consécutifs que nous avions mis en place j’avais peut-être une chance de pas t’appeler

Echec :frowning:

Si c’est possible aussi de pouvoir savoir quel collaborateur a un « V » ou « v » le 31 Juillet en colonne « H » avec un 1 en indiacation cela serai parfait.

et qui n’a pas encore posé c’est vacance en colonne « I ».

Si tu peux à nouveau m’aider s’il te plaît merci beaucoup je te souhaite une excellente journée
JOhnny

Rapport Vacance.xlsm (116,3 Ko)

Bonjours

Attention ton fichier est chamboulé sur les dernières colonnes mettant à mal le résultat du traitement les concernant

Ici il liste les colonnes à utiliser correspondant à chaque nombre de jours :

listenumcolonne = « /2/3/4/5/6/7/8/9/10/ »

Qu’il utilise ici une fois ce nombre établit :

If n < 10 Then
numcolonne = Split(listenumcolonne, « / »)(n) * 1
Else
numcolonne = Split(listenumcolonne, « / »)(9) * 1
End If

ce nombre est porté par la variable « n »
si celle-ci est inférieur à 10 (If n < 10 Then)
il détermine la colonne à remplir avec cette ligne :
numcolonne = Split(listenumcolonne, « / »)(n) * 1
en prenant le morceau approprié de la donnée listenumcolonne déterminé par cette variable « n »
Si n = 5 il prendra la portion 5 de la donnée listenumcolonne morcelé par le caractère « / »
soit pour n = 0 premier morceau celui avant la première balise « / » soit rien
soit pour n = 1 deuxième morceau celui après la première balise « / » soit 2 (2° colonne)
soit pour n = 2 le troisième morceau celui après la deuxième balise « / » soit 3 (3° colonne
soit pour n = 3 le quatrième morceau celui après la troisième balise « / » soit 4 (4° colonne)
soit pour n = 4 le cinquième morceau celui après la quatrième balise « / » soit 5 (5° colonne)

etc…pour la suite

Actuellement ce traitement fonctionne ainsi c’est à dire que pour n = 8 il prendra la portions 8 c’est à dire le huitième morceau soit avec cette nouvelle donnée mise en place par tes soins :

listenumcolonne = « /2/3/4/5/6/7/8/9/16/ »

celui après la septième balise « / » soit 8 qui correspond à la colonne 8 soit « 'H »

Donc tout total « n » égal à 8 ira dans la colonne « H »

Idem pour n=9
celui après la huitième balise « / » soit 9 qui correspond à la colonne 8 soit « 'I »
Donc tout total « n » égal à 9 ira dans la colonne « I »

pour un total supèrieur (n = 10 et +)
C’est cette ligne de code qui est concernée :

numcolonne = Split(listenumcolonne, « / »)(16) * 1

Mais là Bug en perspective car le morceau 16 dans la donnée n’existe pas (10 morceaux max)

Donc dans cet esprit il faut revoir ta copie et surtout mettre en phase la procédure corrigée avec la structure des colonnes en place

Donc ta donnée ici représente les colonnes à utiliser en fonction du nombre totalisé n chacun devant être en phase avec son morceau portant la colonne

listenumcolonne = « /2/3/4/5/6/7/8/9/16/ »

Pour utiliser le 16 (colonne 16) il faut un total n à 9 dans cette liste

Soit avec toutes ces explications tu te retrousses les manches pour l’adaptation appropriée du code soit tu me délègue le bébé mais avec un fichier correcte en rapport

Dans l’attente de te lire

Merci infiniment d’avoir pris le temps de m’expliquer

c’est sûr que je vais essayer grâce a t’es explications d’y arriver part moi meme.

Quoi qu’il arrive je reviens vers toi :blush:

Je vais même m’y employer maintenant

Bravo de ne pas hésiter à mettre les mains dans le cambouis
Il n’y a pas de secret c est en forgeant que l on devient forgeron !!!
Alors à ton enclume !!!

:frowning: , je n’ai pas trouvé :frowning:

J’ai fait plusieurs essais mais l’objectif souhaite n’est pas au rendez-vous.

mon souhaite j’ai du coup garde la meme mise en place , pour que dans la colonne 10 donc la « J »,

Qu’il me dise les periodes que ont plus de 15 « V » consécutif , mon dernier essais et avec superieur ou egal ,

les en tete de colonne ont un impact ?

Rapport Vacance.xlsm (117,6 Ko)

La liste des colonnes à utiliser sont dans cette variable morcelée avec la balise "/’ :

listenumcolonne = « /2/3/4/5/6/7/8/9/10/ »

Il y a 11 partie de la partie 0 à 10
partie 1 celle avant la première balise « / » avec aucune donnée
partie 2 celle après la première balise « / » avec la donnée 2
partie 3 celle après la deuxième balise « / » avec la donnée 3
partie 4 celle après la troisième balise « / » avec la donnée 4
partie 5 celle après la quatrième balise « / » avec la donnée 5
partie 6 celle après la cinqième balise « / » avec la donnée 6
partie 7 celle après la sixième balise « / » avec la donnée 7
partie 8 celle après la septième balise « / » avec la donnée 8
partie 9 celle après la huitième balise « / » avec la donnée 9
partie 10 celle aprés la neuvième balise « / » avec la donnée 10
partie 11 celle aprés la dixième balise « / » avec aucune donnée

Chaque partie est extraite avec la donnée en bout de la commande de cette ligne de code :

Split(listenumcolonne, « / »)(N)
ici par la variable « N »

qui doit être de 0 à 10 pour les 11 parties décrites ci-dessus
si la variable N est égale à 0 cela équivaux à écrire :

Split(listenumcolonne, « / »)(0)

et d’obtenir la première partie décrite ci-dessus soit aucune donnée

si la variable N est égale à 1 cela équivaux à écrire :

Split(listenumcolonne, « / »)(1)

et d’obtenir la deuxième partie décrite ci-dessus soit la donnée 2

si la variable N est égale à 2 cela équivaux à écrire :

Split(listenumcolonne, « / »)(2)

et d’obtenir la troisième partie décrite ci-dessus soit la donnée 3

Ainsi de suite

si la variable N est égale à 8 cela équivaux à écrire :

Split(listenumcolonne, « / »)(8)

et d’obtenir la neuvième partie décrite ci-dessus soit la donnée 9

si la variable N est égale à 9 cela équivaux à écrire :

Split(listenumcolonne, « / »)(9)

et d’obtenir la dixième partie décrite ci-dessus soit la donnée 10

si la variable N est égale à 10 cela équivaux à écrire :

Split(listenumcolonne, « / »)(10)

et d’obtenir la onzième partie décrite ci-dessus soit aucune donnée

Donc dans cette partie de code qui utilise la variable « N » porteur du total les colonnes concernées sont celles des parties 1 à 9 qui sont sollicitées par les indices de 1 à 8 (l’indice 9 étant celui qui utilise la colonne de la partie 10 soit la colonne 10)
Donc la variable « N » ici :

numcolonne = Split(listenumcolonne, « / »)(N) * 1

doit osciller entre 1 et 8

Pour ce faire la condition qui la précède doit interdire toute valeur de « N » supérieur à 8

Or celle mise en place ne convient pas :

If N < 15 Then

il faut ceci :

If N < 9 Then

Puis dans le Else (qui traite tout ce qui ne respecte pas la condition N < 9)
La ligne de code doit faire en sorte de récupérer la dixième partie qui à la donnée 10 celle de la colonne « J »
Pour se faire comme décrit ci-dessus pour cette partie c’est l’indice 9 qui est approprié donc de mettre cette ligne de code qui correspond :

numcolonne = Split(listenumcolonne, « / »)(9) * 1

Et de mettre tous les cas qui ne respectent pas la condition N < 9 dans la colonne 10 c’est à dire la colonne « J »

Regardes et essaies conformément à ces indications

N’hésites pas si des interrogations subsistes quant à tout ce déroulement

T’es vraiment incroyable Merci.

je pense avoir compris , je pense que je regarderai demain depuis 4h ce matin devant l’ecran mes yeux commence a voir flou :slight_smile:

Encore merci je revien vers très vite :slight_smile:

Merci FFO

Petite precision
Pour le contrôle :

If N < 9 Then

Celui-ci exlut tout total superieur à 8 et donc n enrichit que les colonnes de 2 à 9 soit « B » à « I »

Donc la colonne « J » est à traiter dans la partie Else de cette condition
C est à toi de voir ce qui doit être intégré dans celle-ci avec des conditions en rapport
Exemple si tu souhaites n’integrer que les totaux egaux à 15 portės par la variable « N » il suffit de mettre ainsi avant la ligne de code qui détermine le numéro de la colonne 10 :
Else
If N=15 then
numcolonne = Split(listenumcolonne, « / »)(9) * 1
End If
End if

Maintenant reste à savoir comment doivent être traités ceux qui passent dans cette partie Else et qui ne sont pas egaux à 15 quelle colonne doit être utilisée pour chacun d eux et toujours même principe avec ces conditions
Par exemple utiliser la colonne suivante « K » la rajouter dans la variable :

listenumcolonne = « /2/3/4/5/6/7/8/9/10/ »

Ainsi en bout

listenumcolonne = « /2/3/4/5/6/7/8/9/10/11/ »

Puis l indiquer en fin de cette instruction :

numcolonne = Split(listenumcolonne, « / »)(10) * 1

Qui represente la dernière donnée 11
toujours associé à la condition appropriée

Avec ces ultimes suggestions tu devrais te dépatouiller

Tiens moi informé

1 « J'aime »

Coucou FFO,

Merci infiniment pour tes explications qui je pense m’ont permis pas sans mal lol , de comprendre le fonctionnement.

Il fallait de lui indiquer une nouvelle condition et dans quelle colonne il doit la mettre si j’ai bien compris ?

image

Je pense qu’ au vu du résultat ça a semblé fonctionner bien sûr j’ai besoin stp que tu me confirme que juste pour être sûr de ce que je vais envoyer :blush:

Je me perds une petite question la variable « n » tu l’as défini par cette ligne de code « n » = « N » +1 ?
C’est ce qui va permettre la recherche tu « V » ?

image

2e petite question sur mes different tests que j’ai effectué j’ai voulu rajouter la colonne 11 soit « K ».

Avant

image

si je souhaite rajouter

image

Quand j’ai essayé ça n’a pas fonctionné mais en t’écrivant je me rends compte peux être pourquoi

image

Fallait que je note 11 au lieu de 10 ici aussi ?

J’espere avoir reussi , du coup en colonne « J » je vais avoir les noms de tout les collaborateurs qui ont plus de 15 « V » consécutif ?

Mille merci je me suis régale a essayé de cherche :slight_smile:
Rapport Vacance.xlsm (113,2 Ko)

Bonjour
Tu prends du galon !!!
Et je crois que tu deviens accro
Rassures toi c’est une trés bonne addiction croisant le drogué que je suis et plus j’ai de doses plus je monte au septième ciel !!!

« Je pense qu’ au vu du résultat ça a semblé fonctionner bien sûr j’ai besoin stp que tu me confirme que juste pour être sûr de ce que je vais envoye »

Le meilleur verdicte c’est le résultat et là seul toi peux le donner
Si il te convient il me convient
Je suis juste là pour améliorer les instructions si besoin afin de les rentre plus simple donc plus efficace
De ce côté là tu n’as rien effectué de nouveau juste adapté mes lignes de codes de la meilleur des façons je te rassure

« 2e petite question sur mes different tests que j’ai effectué j’ai voulu rajouter la colonne 11 soit « K ». »
Tout est parfait je n’aurais pas fait mieux

« Fallait que je note 11 au lieu de 10 ici aussi ? »
non la colonne « K » est la colonne numéro 11 qui est dans cette liste dans la dixième partie de la variable Listenumcolonne :
« /2/3/4/5/6/7/8/9/10/11/ »
2 partie 1
3 partie 2
4 partie 3
5 partie 4
6 partie 5
7 partie 6
8 partie 7
9 partie 8
10 partie 9
11 partie 10
Pour cibler la bonne donnée il faut indiquer la bonne partie soit pour la donnée 11 la partie 10 dans cette ligne de code :
numcolonne = Split(Listenumcolonne, « / »)(10) * 1

(10) est le numéro de la partie souhaitée dans la variable Listenumcolonne soit la donnée 11 recherchée pour cibler la colonne « K » (11° colonne)

« J’espere avoir reussi , du coup en colonne « J » je vais avoir les noms de tout les collaborateurs qui ont plus de 15 « V » consécutif ? »

Ceux qui totalisent de 9 à 15 « V » mais pas plus !!!
Tu as précédé la ligne de code correspondante de cette condition :
If N < 15 Then
Et ce dans la partie Else de la condition
If N < 9 Then
Donc toutes les sommes N de 9 à 14
Sinon il faut mettre comme ceci
If N < 15 Then
numcolonne = Split(Listenumcolonne, « / »)(9) * 1
Else
numcolonne = Split(Listenumcolonne, « / »)(10) * 1
End If

C’est à dire toutes les sommes « N » de 9 à 14 dans la colonne J avec cette ligne de code
numcolonne = Split(Listenumcolonne, « / »)(9) * 1
sinon donc à partir de la somme « N » égale à 15 et + dans la colonne « K » avec cette ligne de code après le Else
Else
numcolonne = Split(Listenumcolonne, « / »)(10) * 1

« Je me perds une petite question la variable « n » tu l’as défini par cette ligne de code « n » = « N » +1 ?
C’est ce qui va permettre la recherche tu « V » ? »

Si tu regardes la ligne de code qui précède :

If c.Value = « V » Or c.Value = « v » Then

« c » est la variable qui balaye la ligne du nom dans la période choisie
Tu constates la condition c égale à « V » ou « v »
pour exécuter la suivante :
N = N + 1

soit l’ajout à la variable « N » de la valeur 1 le compteur qui tourne pour aboutir à la somme finale

J’espère que c’est plus claire pour toi

« Mille merci je me suis régale a essayé de cherche »

C’était le but
As-tu d’autres demandes à intégrer ?

1 « J'aime »

poufffff merci beaucoup encore une fois pour toute ta patience :-).

Completement , ont commence a me demande de l’aide dans mon entourage :slight_smile: , une amis qui es dans le gardinage de chien , une connaissance dans un entreprise verte :slight_smile: .

T’es génial au plaisir de te lire et revenir vers toi :slight_smile:

Donc tout baigne pour ce projet !!!
Besoin de rien d’autres à son sujet ?
Merci de me dire

Oui c’est tout bon pour moi FFO merci , j’ai pu obtenir les noms que je souhaite controle sans faire les 556 lignes une part une :slight_smile:

J’ai vérifier une 10 dizaines et cetait juste ;:slight_smile:

Encore mille merci pour ton precieux soutien

C est toi que tu dois féliciter et remercier car c est toi qui etait aux commandes
Donc mes félicitations !!!
Au plaisir de renouveler cette expérience une prochaine fois

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.