Formule trop longue

Bonjour,

Je viens vers vous car j'ai soucis de formule trop longue. Alors je l'ai scindée en 2 colonnes.

Je voudrais savoir si il est possible de renvoyer le résultat d'une formule dans une autre cellule qui contient elle même déjà une formule.

Je vous joins mon fichier et pour essayer de m'expliquer : je voudrais que le résultat de la formule des colonnes C, H, M (...) (c'est à dire mettre un X sous condition) dans les colonnes B, G, L...

J'espère être à peut près claire

Merci par avance de vos réponses.

Sandrine

20planning.xlsx (342.32 Ko)

Bonsoir,

Genre de formules en effet à éviter particulièrement ! Tu gagnerais à poser la question avant de te lancer dans ce genre de sport (le plus souvent inutile), ou bien à faire le tour de toutes les fonctions Excel et tu en trouveras toujours qui peuvent avoir une application... et ce ne sera pas du temps perdu pour l'avenir.

Bon, reprenons, tu testes si une date est férié. Tu disposes d'une liste des Jours Fériés.

Tu commences par nommer cette plage : Fériés par exemple ce sera toujours ça de gagné dans l'écriture.

Ensuite, il suffit de savoir si la date testée figure dans cette plage. Tu disposes d'une fonction qui te permet de compter les occurrences d'une valeur dans une plage : NB.SI(plage;critère)

Ton critère est la date testée, la plage est la liste des fériés : NB.SI(Fériés,date) te renverra 1 si la date est fériée, 0 si elle ne l'est pas.

date est à remplacer par la cellule testée... Et comme 1=VRAI et 0=FAUX, ta formule devient :

=SI(NB.SI(Fériés;A4);"XX";TEXTE(A4;"jjj"))

Bonjour,

Merci beaucoup ta formule est très intéressante (et beaucoup moins longue que la mienne), mais il faudrait tester également si la date donnée fait partie des vacances (données dans l'autre plage). Il doit y avoir moyen mais je ne trouve pas....

Bonne journée

De façon analogue, on nomme la plage de début de Vacances : DVac par exemple ! et celle de fin de Vacances : FVac...

On est dans les vacances si la date testée est incluse entre 2 dates bornes de vacances (bornes exclues, selon la façon dont l'éducation nationale établit ses calendriers).

(DVac<A4) renvoie une matrice de VRAI si A4 est postérieur à la borne début vacance, ou FAUX si A4 est antérieur ou égal à cette borne.

(FVac>A4) renvoie un matrice de VRAI SI A4 est antérieur à la borne fin vacance, ou FAUX si A4 est postérieur ou égal à cette borne.

En faisant le produit de ces deux matrices :

(DVac<A4)*(FVac>A4) on obtient une matrice produit de 2 valeurs booléennes, composées de 1 (VRAI*VRAI) si les 2 conditions sont vraies, et de 0 (VRAI*FAUX ; FAUX*VRAI ; FAUX*FAUX) si l'une des conditions ou les deux sont fausses.

On place cette expression dans la fonction SOMMEPROD qui va en renvoyer la somme des éléments.

SOMMEPROD((DVac<A4)*(FVac>A4)) renverra donc 0 si la date n'est pas incluse dans une période de vacance et 1 si la date est incluse dans une période de vacance. (Il ne peut y avoir de résultat supérieur à 1, dans la mesure où une date donnée ne peut être située simultanément à l'intérieur de plusieurs périodes de vacances...)

D'où la formule :

=SI(SOMMEPROD((DVac<A4)*(FVac>A4));"X";"")

pas plus compliquée que la précédente.

Cordialement.

En effet pas plus compliquée (pour toi) et tout aussi courte que la précédente...

C'est super, mais je voudrais maintenant coupler ces 2 formules (mettre le tout dans la même formule), c'est à dire mettre un X si ce sont les vacances et XX si c'est un jour férié (il y a évidemment ou les jours fériés tombent pendant les vacances mais privilégier les jours fériés dans ces cas là) Possibilité ???

Merci en tout cas pour cette aide précieuse

Sandrine

En fait en associant les 2 j'ai réussi

=SI(NB.SI(Fériés;A4);"XX";SI(SOMMEPROD((DVac<A4)*(FVac>A4));"X";TEXTE(A4;"jjj")))

C'est trop cool je suis trop contente , merci beaucoup je vais gagner beaucoup de temps

Bonne journée

Sandrine

Hé bé voilà ! Ça avance ! Il faut juste se pencher un peu dessus...

Bonne continuation.

Mince, j'ai des conditions supplémentaires à apporter à ma formule et là encore je bloque

voici en gros ce que je voudrais mais ça ne fonctionne pas

=SI(NB.SI(Fériés;A4);"XX";(SI(TEXTE(A4;"jjj")="sam"ou"dim";"sam"ou"dim");(SOMMEPROD((DVac<A4)*(FVac>A4));"X";TEXTE(A4;"jjj")))

En fait en français si ma cellule référence est un jour férié alors je veux XX, si c'est un jour de vacances je veux X sauf si ma cellule référence en trois lettres est "sam" ou "dim" alors je je veux qu'elle reste "sam" ou "dim"

ce doit être une histoire de parenthèses, de guillemets ou de ;

Bonjour,

pour le "OU" dans un "SI" la syntaxe est la suivant ^^ :

=SI(OU(1ercondition;2emeCondition.....);Valeur vrai;valeur faux)

Mauvais test pour le jour samedi ou dimanche...

Il faut tester la date avec :

MOD(JOURSEM(date);7)<2

si expression vrai : c'est un samedi ou un dimanche, si faux : c'est un autre jour.

Cordialement.

Rechercher des sujets similaires à "formule trop longue"