Base de donnée

Bonjour,

Voilà j'ai une base excel de congé à gérer et je dois calculer 3 variables (colonnes surlignées en vert dans le fichier en pièce jointe)

  • Stat_Conge_Nb
  • Stat_Conge_Date_Debut
  • Stat_Conge_Date_Fin

Le problème est que c'est fastidieux à faire, j'ai pensé utiliser la fonction "DECALER", "LIGNE", ... en fait je sais pas. Du coup 'j'ai commencé à le faire de manière artisanale mais je ne vais pas m'en sortir, j'espère que quelqu'un peut m'aider.

Juste pour vous donner une idée du résultat j'ai complété les 3 colonnes (Stat_Conge_Nb, Stat_Conge_Date_Debut,, Stat_Conge_Date_Fin) lorsque la colonne "Nb de dossier" =1 ou 2 (sachant que "Nb dossier" peut prendre n valeur). Ah j'ai calculer "Nb de dossier" en fonction de "Num_Dossier"

En pièce jointe une partie du fichier excel en question et un fichier word dans lequel j'ai tenté de formaliser ce que je voulais faire.

Merci d'avance pour votre aide et vos éclairages.

Najwa

15conge-test.zip (25.47 Ko)

Re-Bonjour

Désolé pour ceux qui ont commencé à regarder, vu que je cherche en même temps, je vous remet mon message précédent et le bon fichier word (j'ai oublié de mettre des occurrences) qui pourrait peut être servir .

Bonjour,

Voilà j'ai une base excel de congé à gérer et je dois calculer 3 variables (colonnes surlignées en vert dans le fichier en pièce jointe)

  • Stat_Conge_Nb
  • Stat_Conge_Date_Debut
  • Stat_Conge_Date_Fin

Le problème est que c'est fastidieux à faire, j'ai pensé utiliser la fonction "DECALER", "LIGNE", ... en fait je sais pas. Du coup 'j'ai commencé à le faire de manière artisanale mais je ne vais pas m'en sortir, j'espère que quelqu'un peut m'aider.

Juste pour vous donner une idée du résultat j'ai complété les 3 colonnes (Stat_Conge_Nb, Stat_Conge_Date_Debut,, Stat_Conge_Date_Fin) lorsque la colonne "Nb de dossier" =1 ou 2 (sachant que "Nb dossier" peut prendre n valeur). Ah j'ai calculer "Nb de dossier" en fonction de "Num_Dossier"

En pièce jointe une partie du fichier excel en question et un fichier word dans lequel j'ai tenté de formaliser ce que je voulais faire.

Merci d'avance pour votre aide et vos éclairages.

Merci

Najwa

12conge-test.zip (25.47 Ko)

Bonjour,

En fait tu veux le nombre de lignes à 1, suivi de "S" s'ils ne sont pas tous à 1 ?

eric

Bonsoir,

Désolé pour ma réponse tardive.

En fait mon nombre de ligne peut varier, il n'est pas forcément égale à 1.

Si je prends l'exemple : "Nb de dossier" =2, donc je vois apparaître à chaque fois 2 fois le même numéro de dossier (variable "Num_Dossier")

Pour compléter la variable "Stat_Conge_Nb", je regarde la valeur prise par la variable "Succession"

- Si la 1ère ligne de la variable "succession" =1

- et si la 2ème ligne de la variable "succession" ≠ 1 alors la variable "Stat_Conge_Nb" = 2S

- Sinon la variable "Stat_Conge_Nb" = 2

J'ai réduit mon fichier excel pour essayé de me faire comprendre.

Si tu regardes dans la feuille excel "Exemple",

1er cas : si tu prends le "Num_Dossier" = 16, ma variable "Stat_Conge_Nb" = 2S parce que la 1ère ligne de la variables "Succession" est = 1 et la 2ème ligne de la variable "Succession" est ≠ 1.

2ème cas : si tu prends le "Num_Dossier" = 17, ma variable "Stat_Conge_Nb" = 2 parce que les valeurs prises par la variables "Succession" sont différents de 1 sur les deux lignes.

J'espère qu'avec ce petit exemple, tu comprends vers quoi je veux aboutir.

Merci

Najwa

J'avais bien compris que ton nombre de lignes par dossier variait, j'essayais juste d'exprimer autrement et de façon plus générale ta suite infinie de si().

Avec un dossier de 8 lignes :

  • si toutes à 1 => 8
  • si 5 seulement ont 1 => "5S"
  • si 3 seulement ont 1 => "3S"
etc

C'est ça le principe ?

eric

Bonjour Eric,

Oui c'est ça, tu as très bien compris le principe.

Merci

Najwa

Désolé mais ça ne suffit pas.

En plus ton dernier fichier est plein de trous. Aucun exemple sur 3-4 dossiers, c'est vide à chaque fois. A cause d'une règle supplémentaire ?

Complète des exemples divers avec 3-4 dossiers (pas la peine de mettre 500 lignes si c'est toujours le même cas, allège) et surtout explique avec des mots ce que tu cherches à calculer qu'on puisse en tirer une règle générale plutôt que de ne traiter que des cas particuliers.

Par exemple pour 4 dossiers tu dis :

...Alors « 4S »

Sinon SI 1ère ligne de la colonne (Succession) =1

2ème ligne de la colonne (Succession) =1

3ème ligne de la colonne (Succession) ≠1

2ème ligne de la colonne (Succession) =1

3ème ligne de la colonne (Succession) =1

4ème ligne de la colonne (Succession) ≠1

Alors « 3S » sur les 3 lignes

Et si tu as des 1 en lignes 1-3, 1-4, 2-4 ???

En plus pour aider à comprendre :

  • que représente le nombre dans succession ? Sûrement issu d'une formule mais tu les as supprimées...
  • tu ne veux des "S" QUE SI il y a des 1 ?
  • leur position ou le fait qu'ils se succèdent a-t-il une importance ?

Bref explique la règle générale en listant précisément tous les points.

eric

Eric,

J'ai essayé de formaliser de manière générale ce que je voulais, j'ai allégé le fichier excel et j'ai complété la colonne "Stat_Conge_Nb" avec 3S, 4S, 5, ... voire plus parfois, pour te permettre de voir le résultat attendu. Le calcul de la variable [Succession = Conge_Date_Debut - Conge_Date_Fin] ce sont des valeurs aléatoires que je mises vu que ma base n'est pas complète.

En pièce jointe un nouveau fichier excel et de nouvelle explication dans le fichier word.

En espérant être un peu plus clair dans ce que je demande.

Merci pour ton aide.

Najwa.

Ok, c'est beaucoup plus clair ainsi.

Par contre j'abandonne les formules, ça sera en vba à cause de la reprise en cas de nouveaux congés successifs..

Fichiers de combien de lignes au maximum (à la louche : 100, 500, 1000, ...) ?

Et du coup je vais intégrer la 2nde question que je commence à regarder. Si tu pouvais compléter les dates voulues (avec les *) pour au moins les dossiers 6, 16, 28, 30 de ton dernier fichier stp.

En même temps si tu pouvais mettre les champs dans les colonnes exactes de ton fichier final. VBA est assez rigide et ne supporte pas les changements/insertions/suppressions de colonnes.

As-tu vraiment besoin des champs Nb de dossier et Succession ? Je peux m'en passer en travaillant directement sur les dates.

On peut en même temps contrôler si chevauchement de dates (date fin> date début suivante). Est-ce utile ou au contraire impossible et inutile ?

eric

Bonjour,

Sur un autre fichier j'ai pu voir comment tu voulais tes dates, j'ai donc pu avancer.

Ca ne parait pas mais assez prise de tête...

Lancer la macro avec le bouton.

J'ai qq écarts avec ton modèle, plus dus à des incohérences dans les dates ou un mauvais calcul de ta part. Je te laisse valider le résultat de la macro.

En début de programme il y a des constantes pour définir les positions colonnes utilisées, adapter à ton fichier.

Les colonnes Nb de dossier et Succession sont inutiles pour le programme.

Les données doivent être triées par Dossier puis par Date Début. Les chevauchements de dates sont contrôlés, dates en anomalies en rouge (22 ici car non trié et dates incohérentes).

eric

Bonjour Eric,

Je suis de retour, j'ai eu des problème de connexion ce week end du coup je n'ai pas pu répondre à tes échanges.

Comme tu l'as soulevé dans mon fichier test il y avait des incohérences vu que j'avais renseigné la colonne "successions' de manière aléatoire.

Je viens de tester la macro que tu m'as transmise sur mon vrai fichier de travail, et elle fonctionne du tonnerre ! et ton aidé de contrôler le chevauchement des dates est excellente.

Je te remercie pour tout le temps et l'investissement que tu as passé pour me proposer une telle solution.

Tu es un génie !!!

Najwa

Rechercher des sujets similaires à "base donnee"