Condition périodes de vacances

toujours avec mon tableau ...

Feuille BdCongés! en colonne D, j'ai une formule de recherche avec condition :

Si la date en colonne C est comprise dans des périodes de vacances définies dans la page Légende! j'aurais une recherche différente.

Ce que j'ai fait ne fonctionne pas. Pourtant cela me paraissait logique mais je crois que la condition est vérifiée systématiquement puisqu'elle ne prend pas les valeurs dans l'absolu.

=SI(OU(C7<Légende!$K$5;C7>Légende!$L$5;C7<Légende!$K$6;C7>Légende!$L$6;C7<Légende!$K$7;C7>Légende!$L$7;C7<Légende!$K$8;C7>Légende!$L$8;C7<Légende!$K$9;C7>Légende!$L$9);RECHERCHEV(A7;recherche;15;0);RECHERCHEV(A7;recherche;16;0))

Comment la changer pour qu'elle fonctionne svp ?

merci d'avance

Bonjour oops1er

Ton fichier ressemble de plus en plus à une usine à gaz. il faut déjà 1/2heure pour essayer de comprendre ce que tu veux faire, et quand on croie avoir compris, on s'aperçoit que les références de ta formule ne ménent à rien.

Décourageant...

Cordialement

Oh je suis vraiment navré j'avais fait une copie d'une page d'un document à l'autre et je n'avais pas vu que le tableau des vacances de la feuille Légende n'était pas à la même place.

Voilà qui est réparé :

Je sais que mon tableau est une véritable usine à gaz que j'ai conçu avec toute l'aide précieuse que vous m'avez fournie et nous sommes 3 responsables à l'utiliser depuis septembre 2009.

Le fichier original gère 170 agents, il pèse 3 Mo pour le moment.

J'ai quelques petits détails à règler, notamment cette formule conditionnelle pour les périodes de vacances.

Les agents n'ont pas les mêmes horaires pendant les vacances scolaires. Donc j'ai défini des codes horaires dans la feuille Horaires!

Merci pour votre aide.

Bonjour

Essaie en C2 de "BdCongés" (si j'ai compris ce que tu veux faire)

=SI(ET(SOMMEPROD(--(Légende!$K$5:$K$9>=C2));SOMMEPROD(--(Légende!$L$5:$L$9<=C2)));RECHERCHEV(A2;recherche;14;0);RECHERCHEV(A2;recherche;15;0))

Cordialement

Apparemment ça a l'air de fonctionner..

Il me reste à la transcrire dans le code VBA pour qu'elle s'ajoute automatiquement à la dernière

merci beaucoup..

-- Jeu Jan 28, 2010 12:20 pm --

=SI(ET(SOMMEPROD(--(Légende!$K$5:$K$9>=C2));SOMMEPROD(--(Légende!$L$5:$L$9<=C2)));RECHERCHEV(A2;recherche;14;0);RECHERCHEV(A2;recherche;15;0))

Elle fonctionne super dans la case mais je n'arrive pas à la mettre à la place de l'autre dans le code VBA

à cet endroit :

.Range("D" & LR).Formula = _

"=IF(AND(SUMPRODUCT(--Légende!$K$5:$K$9>C" & LR & ")),SUMPRODUCT(--Légende!$L$5:$L$9<C" & LR & "))),VLOOKUP(A" & LR & ",recherche,15,0),VLOOKUP(A" & LR & ",recherche,16,0))"

ne fonctionne pas.

Quelqu'un peut il m'aider à trouver pourquoi svp ?

Bonsoir

Elle fonctionne super dans la case mais je n'arrive pas à la mettre à la place de l'autre dans le code VBA

à cet endroit :

.Range("D" & LR).Formula = _

"=IF(AND(SUMPRODUCT(--Légende!$K$5:$K$9>C" & LR & ")),SUMPRODUCT(--Légende!$L$5:$L$9<C" & LR & "))),VLOOKUP(A" & LR & ",recherche,15,0),VLOOKUP(A" & LR & ",recherche,16,0))"

ne fonctionne pas.

Il manque déjà les parenthéses avant Légende...

Tu peux aussi essayer à partir de

=SI(ET(SOMMEPROD((Légende!$K$5:$K$9>=C2))*1;SOMMEPROD((Légende!$L$5:$L$9<=C2))*1);RECHERCHEV(A2;recherche;14;0);RECHERCHEV(A2;recherche;15;0))

Cordialement

C'est génial, merci.

C'était donc les parenthèses..

Je ne sais pas si j'y arriverait un jour avec ces put... de parenthèses.

Je m'y ferait jamais.

Merci merci merci

Me revoili me revoilou

en fait je me suis rendu compte que ma formule ne fonctionnait plus depuis que je l'ai passé en VBA parce qu'il y a une différence :

celle-ci fonctionne très bien si je la mets dans la case directement :

=SI(ET(SOMMEPROD(--(Légende!$K$5:$K$9>=C2));SOMMEPROD(--(Légende!$L$5:$L$9<=C2)));RECHERCHEV(A2;recherche;14;0);RECHERCHEV(A2;recherche;15;0))

donc en VBA je l'ai mise comme ça :

.Range("D" & LR).Formula = _

"=IF(AND(SUMPRODUCT(--(Légende!$K$5:$K$9>=C" & LR & ")),SUMPRODUCT(--(Légende!$L$5:$L$9<=C" & LR & "))),VLOOKUP(A" & LR & ",recherche,15,0),VLOOKUP(A" & LR & ",recherche,16,0))"

Ce que le VBA n'interprète pas ce sont les -- avant la parenthèse.

A quoi servent ces 2 tirets ? comment les transformer en VBA ?

merci d'avance

Bonjour à tous,

oops1er a écrit :

A quoi servent ces 2 tirets ?

Ils servent à transformer un VRAI/FAUX en 1/0. Ceci afin que le SOMMEPROD puisse marcher.

En VBA, tu peux mettre ça :

    .Range("D" & LR).Formula = _
        "=IF(AND(SUMPRODUCT(--(Légende!R5C11:R9C11>=RC[-1])),SUMPRODUCT(--(Légende!R5C12:R9C12<=RC[-1]))),VLOOKUP(RC[-3],recherche,14,0),VLOOKUP(RC[-3],recherche,15,0))"

Pour obtenir cette formule, j'ai simplement utilisé l'enregistreur de macro.

Avec l'enregistreur de macro, tu enregistres les actions suivantes :

  1. Tu sélectionnes D2 par exemple
  2. Tu colles la formule d'Amadéus
  3. Tu valides
  4. T'arrêtes l'enregistreur de macro
  5. Et tu obtiens la formule magique !

L'avantage de cette formule par rapport à la tienne c'est que quelque soit la ligne où tu la mets, elle se calculera toujours à partir de la valeur se trouvant à la même ligne mais dans la colonne précédente. D'où le RC[-1].

merci beaucoup c'est magique en effet...

Re-bonjour,

je me suis rendu compte en fait que ça ne fonctionne pas...

Je ne comprends plus rien, les résultats par rapport à cette formule sont complètements aléatoires.

Y aurait-il une autre solution s'il vous plaît ?

Bonjour oops1er

Le problème, c'est que nous n'avons plus de fichier pour regarder.

Cordialement

J'étais en train de le mettre...lol

mais vous le connaissez déjà

Bonjour

En K4 de la Feuille "Légende"; tu tapes 01/01/10

Formule en C2 de Feuille "BdCongés", à incrémenter

=SI(OU(RECHERCHEV(C2;Légende!$K$4:$L$9;2;1)<C2;C2<MIN(Légende!$K$5:$K$9));RECHERCHEV(A2;recherche;7;0);SI(RECHERCHEV(C2;Légende!$K$5:$L$9;2;1)>C2;RECHERCHEV(A2;recherche;8;0);RECHERCHEV(A2;recherche;7;0)))

Cordialement

ça a l'air de bien fonctionner.

C'est très gentil, tu peux m'expliquer la logique ?

j'avoue ne pas bien comprendre...

Bonjour

A y être, j'ai raccourci la formule. Je t'ai mis un maximum d'explications dans le fichier

Cordialement

17oops1er-v3.zip (14.86 Ko)
Rechercher des sujets similaires à "condition periodes vacances"