Simplifier une formule

Fermé
babie971 Messages postés 11 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 3 août 2015 - 3 août 2015 à 15:30
 babie971 - 12 août 2015 à 23:53
Bonjour,

j'aurais besoin d'aide pour réduire une fonction et en y rajoutant des conditions

sur la feuille remplacement, en P2 et P3 rajouté en recherche R3 et R4 avant R

https://www.cjoint.com/c/EHdnvd71nZj

Merci de faire les tests sur le mois de juillet, je n'ai pas encore maj tout le fichier.

A votre disposition au besoin

A bientôt


3 réponses

Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 452
3 août 2015 à 18:13
Bonjour,
C'est incompréhensible ..... même avec le classeur !

0
Bonsoir Le Pingou,

Merci d'avoir tenté. il est vrai que la formule est complexe mais elle fonctionne du tonnerre.

Malheureusement mon besoin a changé et quand je tente d'augmenter mes conditions je suis bloquée.

Merci quand même. je continue!!
0
Raymond PENTIER Messages postés 58763 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 décembre 2024 17 255
4 août 2015 à 04:34
My Babie, ma voisine des Abymes, tu crois vraiment qu'un simple bénévole, de passage sur CCM, va pouvoir consacrer assez de son temps à décortiquer, analyser et comprendre ta formule-usine à gaz ? Tu sais qu'en cellule G16 il y a 3211 caractères ?
Tu pourrais déjà alléger en utilisant des noms de formule définis ; par exemple, dans une copie de ton fichier, étant dans G16, tu définis le nom EM pour la formule =ENT((MOIS(A16)-1)/6)+1
Dans le même esprit, tu saisis "ER SEMESTRE " en Z1 et "EME SEMESTRE " en Z2 et tu définis les noms RS et MS pour ces 2 cellules.
Puis tu sélectionnes F16:G16 (il ne faut pas prendre une cellule isolée) et utilises ctrl+H pour remplacer d'abord
ENT((MOIS(A16)-1)/6)+1 par EM
puis pour remplacer "ER SEMESTRE " par RS et "EME SEMESTRE " par MS.

0
bonsoir voisin Raymond, Merci pour tes suggestions je vais m'y atteler.

Bonne soirée!!
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
5 août 2015 à 01:35
Bonsoir à tous,

je réponds surtout au titre de ce post : "simplifier une formule"
voilà le résultat :

En C16 :
 =SI(à_traiter;SIERREUR(TRIG_du_mois_du_jour_dans_semestre_code_J_et_fonction;SIERREUR(TRIG_du_mois_du_jour_dans_semestre_code_R_et_fonction;""));"")

En E16 :
=SI(à_traiter;SI(pas_code_J_ni_correspondance_fonction_saisie;SIERREUR(TRIG_2_du_mois_du_jour_dans_semestre_code_R_et_fonction;"");SIERREUR(TRIG_du_mois_du_jour_dans_semestre_code_R_et_fonction;""));"")

En G16 :
=SI(à_traiter;SI(pas_code_J_ni_correspondance_fonction_saisie;SIERREUR(TRIG_3_du_mois_du_jour_dans_semestre_code_R_et_fonction;"");SIERREUR(TRIG_2_du_mois_du_jour_dans_semestre_code_R_et_fonction;""));"")

Ces 3 formules sont en matriciel donc validation par CTRL+MAJ+ENTER

Quelques noms à créer, en se positionnant sur une cellule de la ligne 16 :

à_traiter
=OU('Dde de remplacement'!$B16="M";'Dde de remplacement'!$B16="N";'Dde de remplacement'!$B16="A")
Commentaire : on ne calcule quelque chose que si la colonne B contient "M" ou "N" ou "A". Sinon, chaine vide.

data_du_semestre
=INDIRECT(onglet_du_semestre&"!$B$9:$HA$43")
Commentaire : contient les données du tableau situé dans l'onglet "onglet_du_semestre"

data_jour_dans_semestre
=INDEX(data_du_semestre;0;indice_jour_dans_semestre)
Commentaire : contient la colonne du jour dans les données du tableau situé dans l'onglet "onglet_du_semestre"


fonction_du_mois_du_jour_dans_semestre
=DECALER(TRIG_1er_mois_Semestre;0;indice_colonne_fonction_du_jour_dans_semestre)
Commentaire : il s'agit de la colonne "fonction" du sous-tableau du mois de la date ('Dde de remplacement'!$A16). Pour l'identifier, on déplace la 1ère colonne TRIG du semestre d'un certain nombre de colonnes.


fonction_saisie
="("&'Dde de remplacement'!$G$10&")"
Commentaire : contient la valeur de la fonction saisie en $G$10 de l'onglet 'Dde de remplacement'

indice_colonne_fonction_du_jour_dans_semestre
=indice_jour_dans_semestre-JOUR('Dde de remplacement'!$A16)-1
Commentaire : contient l'indice de la colonne "fonction" du mois du jour ('Dde de remplacement'!$A16) dans le tableau des données du semestre concerné

indice_colonne_TRIG_du_jour_dans_semestre
=indice_colonne_fonction_du_jour_dans_semestre-1
Commentaire : contient l'indice de la colonne "TRIG" du mois du jour ('Dde de remplacement'!$A16) dans le tableau des données du semestre concerné. C'est la colonne juste à gauche de celle des fonctions, d'où la simple différence de 1 entre les 2 indices.

indice_jour_dans_semestre
=EQUIV('Dde de remplacement'!$A16;ligne_des_dates_du_semestre;0)
Commentaire : contient l'indice de la colonne du jour ('Dde de remplacement'!$A16) dans le tableau des données du semestre concerné

ligne_des_dates_du_semestre =INDIRECT(onglet_du_semestre&"!$B$7:$HA$7")
Commentaire : contient la ligne des dates (la n° 7) dans le tableau des données du semestre concerné

lignes_code_J_et_fonction
=SI((fonction_du_mois_du_jour_dans_semestre=fonction_saisie)*(data_jour_dans_semestre="J");LIGNE(INDIRECT(onglet_du_semestre&"!$D$9:$D$43"))-8;9^9)
Commentaire : tableau intermédiaire des lignes répondant aux critères "J" pour la colonne du jour (data_jour_dans_semestre) et fonction_saisie pour la colonne fonction_du_mois_du_jour_dans_semestre

lignes_code_R_et_fonction
=SI((fonction_du_mois_du_jour_dans_semestre=fonction_saisie)*(data_jour_dans_semestre="R");LIGNE(INDIRECT(onglet_du_semestre&"!$D$9:$D$43"))-8;9^9)
Commentaire : même tableau que le précédent mais pour le code "R".

no_lig_code_J_et_fonction
=MIN(lignes_code_J_et_fonction)
Commentaire : contient le premier n° de ligne de lignes_code_J_et_fonction

no_lig_code_R_et_fonction
=MIN(lignes_code_R_et_fonction)
Commentaire : contient le premier n° de ligne de lignes_code_R_et_fonction

onglet_du_semestre
="'"&ENT((MOIS('Dde de remplacement'!$A16)-1)/6)+1&SI(ENT((MOIS('Dde de remplacement'!$A16)-1)/6)+1=1;"ER SEMESTRE ";"EME SEMESTRE ")&ANNEE('Dde de remplacement'!$A16)&"'"
Commentaire : contient le nom de l'onglet contenant la date 'Dde de remplacement'!$A16

pas_code_J_ni_correspondance_fonction_saisie
=SIERREUR(TRIG_du_mois_du_jour_dans_semestre_code_J_et_fonction;"")=""
Commentaire : booléen indiquant que l'on n'a rien trouvé correspondant aux 2 conditions "J" et "fonction". On sera donc amené à dérouler la règle de gestion suivante sur les "R" et "fonction".

TRIG_1er_mois_Semestre
=INDIRECT(onglet_du_semestre&"!$B$9:$B$43")
Commentaire : il s'agit de la 1ère colonne "TRIG" du semestre concerné.

TRIG_2_du_mois_du_jour_dans_semestre_code_R_et_fonction
=INDEX(TRIG_du_mois_du_jour_dans_semestre;PETITE.VALEUR(lignes_code_R_et_fonction;2))
Commentaire : 2ème valeur dans la colonne "TRIG" du mois du jour pour laquelle "R" est rencontré dans data_jour_dans_semestre et fonction_saisie dans la colonne fonction_du_mois_du_jour_dans_semestre. Permet de gérer les multiples "R"

TRIG_3_du_mois_du_jour_dans_semestre_code_R_et_fonction
=INDEX(TRIG_du_mois_du_jour_dans_semestre;PETITE.VALEUR(lignes_code_R_et_fonction;3))
Commentaire : 3ème valeur dans la colonne "TRIG" du mois du jour pour laquelle "R" est rencontré dans data_jour_dans_semestre et fonction_saisie dans la colonne fonction_du_mois_du_jour_dans_semestre. Permet de gérer les multiples "R"

TRIG_du_mois_du_jour_dans_semestre
=DECALER(TRIG_1er_mois_Semestre; 0; indice_colonne_TRIG_du_jour_dans_semestre)
Commentaire : colonne "TRIG" du mois du jour saisi en 'Dde de remplacement'!$A16

TRIG_du_mois_du_jour_dans_semestre_code_J_et_fonction
=INDEX(TRIG_du_mois_du_jour_dans_semestre;no_lig_code_J_et_fonction)
Commentaire : 1ère valeur dans la colonne "TRIG" du mois du jour pour laquelle "J" est rencontré dans data_jour_dans_semestre et fonction_saisie dans la colonne fonction_du_mois_du_jour_dans_semestre

TRIG_du_mois_du_jour_dans_semestre_code_R_et_fonction
=INDEX(TRIG_du_mois_du_jour_dans_semestre;no_lig_code_R_et_fonction)
Commentaire : 1ère valeur dans la colonne "TRIG" du mois du jour pour laquelle "R" est rencontré dans data_jour_dans_semestre et fonction_saisie dans la colonne fonction_du_mois_du_jour_dans_semestre

Les commentaires devraient aider pour l'adaptation des formules aux nouveaux besoins.

Cordialement
0
Bonjour, & Merci JvDo pour ton retour et encore merci pour ton implication!!

Alors y a plus qu'à!!!

je reviens vers vous pour le compte rendu!

MERCI!!!!!!! à tous!!!!!!
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858 > babie971
5 août 2015 à 16:43
Bonjour,

J'ai complètement revu la façon de voir le problème.
je te laisse tester : https://www.cjoint.com/c/EHfoM34w58F

tu pourras choisir n'importe quelle priorité des codes, simplement en réorganisant l'ordre des colonnes cachées à droite de ton tableau Dde de Remplacement

cordialement
0
Hello JvDO,

Problème de connexion je ne vois que maintenant ton EXTRAORDINAIRE travail!!! - Comme d'habitude j'ai envie de dire!!!!!!

Tu es un boss boss boss!!!

MER-CIIIIIII!!!!!
je vais étudier tout cela

Franchement je ne saurais te dire à quel point tu m'épates.

Merci!!je t'en dirai des nouvelles
0