Bonjour à tous,
Merci à Jacqouille pour sa réponse sur compter les doublons
La formule matricielle qu'il me conseille
=SOMME(N(FREQUENCE(C4:C51;C4:C51)>0))
fonctionne parfaitement, sauf quand j'ai une valeur texte
Je m'explique, j'ai une colonne avec une série de numéros de commandes
4364,4365,4365,43666-7, 4366-7
La formule devrait me compter 3 alors qu'elle me compte 2
Elle ignore les valeurs textes parcequ'il y a un tiret
Comment faire pour compter les valeurs uniques qui prenne en compte les
valeurs texte ?
Merci
Re... Merci de ta réponse. Mais, dans aucun des cas (dans ton exemple) le résultat est unique. C'est un résultat sans doublon, non ?? Sans tenir compte des vides. Seules cellules A2, A5, A7, A9 sont vraiment uniques. A3 et A4 sont doubles.
Je crois que cela est dû à l'interprétation de "Valeur Unique" Pour moi, le résultat devrait être 4
Bon, cela ne nous empêchera de dormir.* JJ
"AV" a écrit dans le message de news:
Ave,
Une "synthèse" : http://cjoint.com/?itjHbgEgVk
AV
Re...
Merci de ta réponse.
Mais, dans aucun des cas (dans ton exemple) le résultat est unique.
C'est un résultat sans doublon, non ??
Sans tenir compte des vides.
Seules cellules A2, A5, A7, A9 sont vraiment uniques.
A3 et A4 sont doubles.
Je crois que cela est dû à l'interprétation de "Valeur Unique"
Pour moi, le résultat devrait être 4
Bon, cela ne nous empêchera de dormir.*
JJ
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de
news:OfYYhH2wGHA.4160@TK2MSFTNGP06.phx.gbl...
Re... Merci de ta réponse. Mais, dans aucun des cas (dans ton exemple) le résultat est unique. C'est un résultat sans doublon, non ?? Sans tenir compte des vides. Seules cellules A2, A5, A7, A9 sont vraiment uniques. A3 et A4 sont doubles.
Je crois que cela est dû à l'interprétation de "Valeur Unique" Pour moi, le résultat devrait être 4
Bon, cela ne nous empêchera de dormir.* JJ
"AV" a écrit dans le message de news:
Ave,
Une "synthèse" : http://cjoint.com/?itjHbgEgVk
AV
AV
Je crois que cela est dû à l'interprétation de "Valeur Unique"
C'est clair que tout est dans l'interprétation mais...... Par "convention" (et tradition ?), ce qu'on appelle les "valeurs uniques" sont celles qui correspondent à une extraction sans doublon et non celles qui ne sont représentées qu'une seule fois ("valeurs solitaires" (Modeste abstiens toi !)) pour lesquelles, par contre, la formule =SOMMEPROD((NB.SI(plage;plage)=1)*1) conviendra tout à fait et renverra effectivement 4
AV
Je crois que cela est dû à l'interprétation de "Valeur Unique"
C'est clair que tout est dans l'interprétation mais......
Par "convention" (et tradition ?), ce qu'on appelle les "valeurs uniques" sont
celles qui correspondent à une extraction sans doublon et non celles qui ne sont
représentées qu'une seule fois ("valeurs solitaires" (Modeste abstiens toi !))
pour lesquelles, par contre, la formule
=SOMMEPROD((NB.SI(plage;plage)=1)*1)
conviendra tout à fait et renverra effectivement 4
Je crois que cela est dû à l'interprétation de "Valeur Unique"
C'est clair que tout est dans l'interprétation mais...... Par "convention" (et tradition ?), ce qu'on appelle les "valeurs uniques" sont celles qui correspondent à une extraction sans doublon et non celles qui ne sont représentées qu'une seule fois ("valeurs solitaires" (Modeste abstiens toi !)) pour lesquelles, par contre, la formule =SOMMEPROD((NB.SI(plage;plage)=1)*1) conviendra tout à fait et renverra effectivement 4
AV
Jacky
"valeurs solitaires" Celle-là, on ne me l'avait pas encore faite ;o)) Quant à Modeste, il ne peut plus répondre, il a les doigts bandés.
JJ
"valeurs solitaires"
Celle-là, on ne me l'avait pas encore faite ;o))
Quant à Modeste, il ne peut plus répondre, il a les doigts bandés.
"valeurs solitaires" Celle-là, on ne me l'avait pas encore faite ;o)) Quant à Modeste, il ne peut plus répondre, il a les doigts bandés.
JJ
Jacky
Re.. Comme il n'y a pas beaucoup d'affluence et si tu en as envie. Je souhaiterais que tu m'expliques une de tes (nombreuses) formule que je n'arrive pas a comprendre entièrement (pour ne pas dire plus) soit:
Re..
Comme il n'y a pas beaucoup d'affluence et si tu en as envie.
Je souhaiterais que tu m'expliques une de tes (nombreuses) formule que je
n'arrive pas a comprendre entièrement (pour ne pas dire plus) soit:
Re.. Comme il n'y a pas beaucoup d'affluence et si tu en as envie. Je souhaiterais que tu m'expliques une de tes (nombreuses) formule que je n'arrive pas a comprendre entièrement (pour ne pas dire plus) soit:
Bonsoir Président Poétiquement parlant, la première cel vide ne devrait-elle pas être considérée comme unique et les suivantes comme doux blonds? -) PS Il ne faudra pas oublier de relancer les cotisations pour la SPA.
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"AV" a écrit dans le message de news:
Nombre de valeurs uniques :
Si pas de vides et pas d'erreur =SOMME(1/NB.SI(Plage;Plage))
Alpha et num mélangés avec vides (sans erreurs) =SOMME(SI(NBCAR(Plage);1/NB.SI(Plage;Plage)))
Vides ou pas , texte ou pas, erreur ou pas (exclues) =SOMME(SI(ESTVIDE(Plage);"";1/NB.SI(Plage;Plage)-ESTERREUR(Plage)))
Ces formules sont matricielles (validation par ctrl+maj+entrée) AV
Bonsoir Président
Poétiquement parlant, la première cel vide ne devrait-elle pas être
considérée comme unique et les suivantes comme doux blonds? -)
PS Il ne faudra pas oublier de relancer les cotisations pour la SPA.
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/
Jacquouille.
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
elqSXwuwGHA.2208@TK2MSFTNGP05.phx.gbl...
Nombre de valeurs uniques :
Si pas de vides et pas d'erreur
=SOMME(1/NB.SI(Plage;Plage))
Alpha et num mélangés avec vides (sans erreurs)
=SOMME(SI(NBCAR(Plage);1/NB.SI(Plage;Plage)))
Vides ou pas , texte ou pas, erreur ou pas (exclues)
=SOMME(SI(ESTVIDE(Plage);"";1/NB.SI(Plage;Plage)-ESTERREUR(Plage)))
Ces formules sont matricielles (validation par ctrl+maj+entrée)
AV
Bonsoir Président Poétiquement parlant, la première cel vide ne devrait-elle pas être considérée comme unique et les suivantes comme doux blonds? -) PS Il ne faudra pas oublier de relancer les cotisations pour la SPA.
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"AV" a écrit dans le message de news:
Nombre de valeurs uniques :
Si pas de vides et pas d'erreur =SOMME(1/NB.SI(Plage;Plage))
Alpha et num mélangés avec vides (sans erreurs) =SOMME(SI(NBCAR(Plage);1/NB.SI(Plage;Plage)))
Vides ou pas , texte ou pas, erreur ou pas (exclues) =SOMME(SI(ESTVIDE(Plage);"";1/NB.SI(Plage;Plage)-ESTERREUR(Plage)))
Ces formules sont matricielles (validation par ctrl+maj+entrée) AV
La formule n'ayant de sens que par rapport à la question initiale, rappel de celle-ci (fil du 18/08/2006 14:13) : "Trouver le 14ième jour (Xième) après une date D (A1 = 15/06/2006)" "Si le Xième jour après D tombe un samedi ou un dimanche, ou un jour au-delà du 28° du mois ou un jour férié (plage de référence pour les jours fériés), ajouter 1 et cela autant de fois que nécessaire."
L 'idée est donc de créer une série de jours au-delà du Xième demandé et de retenir le 1° qui répond aux exigences Tout d'abord, pour des commodités de tests, remplacer 1000 par 100 dans la formule Dans la formule, le "noud de la chose" est la partie $A$1+LIGNE(INDIRECT("14:100")) C 'est ce qui permet de créer une matrice des jours qui vont de A1 + 14 à A1 + 100 Ca donne : {38897;38898;38899;38900;38901;38902;..;38983} Pour visualiser ce résultat intermédiaire, sélectionner dans la barre de formule $A$1+LIGNE(INDIRECT("14:100")) et faire F9
Au travers de 3 tests logiques, on va chercher quel est la 1° date (le MIN) de cette série qui respecte, simultanément (fonction ET), les 3 conditions indiquées Rappel : Dans une formule matricielle, on remplace la fonction ET par l'opérateur *
1° test : le jour ne doit pas être > au 28° du mois (JOUR($A$1+LIGNE(INDIRECT("14:100")))<29) Résultat intermédiaire (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI}
2° test : le jour ne doit pas être samedi ou dimanche (JOURSEM($A$1+LIGNE(INDIRECT("14:100"));2)<6) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX}
3° test : le jour ne doit pas être un jour férié (ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:100"));JrF; 0)))) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI}
Résultat intermédiaire des 3 tests simultanés (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI} * {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX} * {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI Dans la formule matricielle, chaque élément de chacune des matrices étant multiplié par les 2 autres, le résultat renvoyé par XL est : {0;0;0;0;0;1;..;0} On voit là, que le 6° jour après la date D + 14 est le 1° qui répond aux 3 conditions simultanées
La fonction SI renverra le "bon" jour en fonction de ces tests logiques : SI(Tests Logiques = 1 ; Dates) Résultat intermédiaire de la fonction SI : SI({0;0;0;0;0;1;..;0};{38897;38898;38899;38900;38901;38902;..;38983}) donne : ({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX}
La fonction MIN permet, ensuite, de ne retenir que la 1° valeur numérique de la matrice résultats = MIN({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX})
Résultat : 38902 N° de série qui correspond au mardi 04/07/06 (le 03/07/06 est défini comme férié)
La formule n'ayant de sens que par rapport à la question initiale, rappel de
celle-ci (fil du 18/08/2006 14:13) :
"Trouver le 14ième jour (Xième) après une date D (A1 = 15/06/2006)"
"Si le Xième jour après D tombe un samedi ou un dimanche, ou un jour au-delà du
28° du mois ou un jour férié (plage de référence pour les jours fériés), ajouter
1 et cela autant de fois que nécessaire."
L 'idée est donc de créer une série de jours au-delà du Xième demandé et de
retenir le 1° qui répond aux exigences
Tout d'abord, pour des commodités de tests, remplacer 1000 par 100 dans la
formule
Dans la formule, le "noud de la chose" est la partie
$A$1+LIGNE(INDIRECT("14:100"))
C 'est ce qui permet de créer une matrice des jours qui vont de A1 + 14 à A1 +
100
Ca donne : {38897;38898;38899;38900;38901;38902;..;38983}
Pour visualiser ce résultat intermédiaire, sélectionner dans la barre de formule
$A$1+LIGNE(INDIRECT("14:100")) et faire F9
Au travers de 3 tests logiques, on va chercher quel est la 1° date (le MIN) de
cette série qui respecte, simultanément (fonction ET), les 3 conditions
indiquées
Rappel : Dans une formule matricielle, on remplace la fonction ET par
l'opérateur *
1° test : le jour ne doit pas être > au 28° du mois
(JOUR($A$1+LIGNE(INDIRECT("14:100")))<29)
Résultat intermédiaire (visualiser par sélection et F9) :
{FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI}
2° test : le jour ne doit pas être samedi ou dimanche
(JOURSEM($A$1+LIGNE(INDIRECT("14:100"));2)<6)
Résultat intermédiaire (visualiser par sélection et F9) :
{VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX}
3° test : le jour ne doit pas être un jour férié
(ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:100"));JrF; 0))))
Résultat intermédiaire (visualiser par sélection et F9) :
{VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI}
Résultat intermédiaire des 3 tests simultanés (visualiser par sélection et F9)
:
{FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI} *
{VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX} *
{VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI
Dans la formule matricielle, chaque élément de chacune des matrices étant
multiplié par les 2 autres, le résultat renvoyé par XL est : {0;0;0;0;0;1;..;0}
On voit là, que le 6° jour après la date D + 14 est le 1° qui répond aux 3
conditions simultanées
La fonction SI renverra le "bon" jour en fonction de ces tests logiques :
SI(Tests Logiques = 1 ; Dates)
Résultat intermédiaire de la fonction SI :
SI({0;0;0;0;0;1;..;0};{38897;38898;38899;38900;38901;38902;..;38983})
donne : ({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX}
La fonction MIN permet, ensuite, de ne retenir que la 1° valeur numérique de la
matrice résultats
= MIN({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX})
Résultat : 38902
N° de série qui correspond au mardi 04/07/06 (le 03/07/06 est défini comme
férié)
La formule n'ayant de sens que par rapport à la question initiale, rappel de celle-ci (fil du 18/08/2006 14:13) : "Trouver le 14ième jour (Xième) après une date D (A1 = 15/06/2006)" "Si le Xième jour après D tombe un samedi ou un dimanche, ou un jour au-delà du 28° du mois ou un jour férié (plage de référence pour les jours fériés), ajouter 1 et cela autant de fois que nécessaire."
L 'idée est donc de créer une série de jours au-delà du Xième demandé et de retenir le 1° qui répond aux exigences Tout d'abord, pour des commodités de tests, remplacer 1000 par 100 dans la formule Dans la formule, le "noud de la chose" est la partie $A$1+LIGNE(INDIRECT("14:100")) C 'est ce qui permet de créer une matrice des jours qui vont de A1 + 14 à A1 + 100 Ca donne : {38897;38898;38899;38900;38901;38902;..;38983} Pour visualiser ce résultat intermédiaire, sélectionner dans la barre de formule $A$1+LIGNE(INDIRECT("14:100")) et faire F9
Au travers de 3 tests logiques, on va chercher quel est la 1° date (le MIN) de cette série qui respecte, simultanément (fonction ET), les 3 conditions indiquées Rappel : Dans une formule matricielle, on remplace la fonction ET par l'opérateur *
1° test : le jour ne doit pas être > au 28° du mois (JOUR($A$1+LIGNE(INDIRECT("14:100")))<29) Résultat intermédiaire (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI}
2° test : le jour ne doit pas être samedi ou dimanche (JOURSEM($A$1+LIGNE(INDIRECT("14:100"));2)<6) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX}
3° test : le jour ne doit pas être un jour férié (ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:100"));JrF; 0)))) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI}
Résultat intermédiaire des 3 tests simultanés (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI} * {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX} * {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI Dans la formule matricielle, chaque élément de chacune des matrices étant multiplié par les 2 autres, le résultat renvoyé par XL est : {0;0;0;0;0;1;..;0} On voit là, que le 6° jour après la date D + 14 est le 1° qui répond aux 3 conditions simultanées
La fonction SI renverra le "bon" jour en fonction de ces tests logiques : SI(Tests Logiques = 1 ; Dates) Résultat intermédiaire de la fonction SI : SI({0;0;0;0;0;1;..;0};{38897;38898;38899;38900;38901;38902;..;38983}) donne : ({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX}
La fonction MIN permet, ensuite, de ne retenir que la 1° valeur numérique de la matrice résultats = MIN({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX})
Résultat : 38902 N° de série qui correspond au mardi 04/07/06 (le 03/07/06 est défini comme férié)
http://cjoint.com/?iuibkl1kXq
AV
AV
Poétiquement parlant, la première cel vide ne devrait-elle pas être considérée comme unique et les suivantes comme doux blonds? -)
C'est comme on veut : http://cjoint.com/?itjHbgEgVk
PS Il ne faudra pas oublier de relancer les cotisations pour la SPA.
Hum... il en reste si peu qui savent encore ce que c'est ... Et puis comme je suis parti avec la caisse, je ne souhaiterais pas que...
AV
Poétiquement parlant, la première cel vide ne devrait-elle pas être considérée
comme unique et les suivantes comme doux blonds? -)
C'est comme on veut :
http://cjoint.com/?itjHbgEgVk
PS Il ne faudra pas oublier de relancer les cotisations pour la SPA.
Hum... il en reste si peu qui savent encore ce que c'est ...
Et puis comme je suis parti avec la caisse, je ne souhaiterais pas que...
La formule n'ayant de sens que par rapport à la question initiale, rappel de celle-ci (fil du 18/08/2006 14:13) : "Trouver le 14ième jour (Xième) après une date D (A1 = 15/06/2006)" "Si le Xième jour après D tombe un samedi ou un dimanche, ou un jour au-delà du 28° du mois ou un jour férié (plage de référence pour les jours fériés), ajouter 1 et cela autant de fois que nécessaire."
L 'idée est donc de créer une série de jours au-delà du Xième demandé et de retenir le 1° qui répond aux exigences Tout d'abord, pour des commodités de tests, remplacer 1000 par 100 dans la formule Dans la formule, le "noud de la chose" est la partie $A$1+LIGNE(INDIRECT("14:100")) C 'est ce qui permet de créer une matrice des jours qui vont de A1 + 14 à A1 + 100 Ca donne : {38897;38898;38899;38900;38901;38902;..;38983} Pour visualiser ce résultat intermédiaire, sélectionner dans la barre de formule $A$1+LIGNE(INDIRECT("14:100")) et faire F9
Au travers de 3 tests logiques, on va chercher quel est la 1° date (le MIN) de cette série qui respecte, simultanément (fonction ET), les 3 conditions indiquées Rappel : Dans une formule matricielle, on remplace la fonction ET par l'opérateur *
1° test : le jour ne doit pas être > au 28° du mois (JOUR($A$1+LIGNE(INDIRECT("14:100")))<29) Résultat intermédiaire (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI}
2° test : le jour ne doit pas être samedi ou dimanche (JOURSEM($A$1+LIGNE(INDIRECT("14:100"));2)<6) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX}
3° test : le jour ne doit pas être un jour férié (ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:100"));JrF; 0)))) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI}
Résultat intermédiaire des 3 tests simultanés (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI} * {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX} * {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI Dans la formule matricielle, chaque élément de chacune des matrices étant multiplié par les 2 autres, le résultat renvoyé par XL est : {0;0;0;0;0;1;..;0} On voit là, que le 6° jour après la date D + 14 est le 1° qui répond aux 3 conditions simultanées
La fonction SI renverra le "bon" jour en fonction de ces tests logiques : SI(Tests Logiques = 1 ; Dates) Résultat intermédiaire de la fonction SI : SI({0;0;0;0;0;1;..;0};{38897;38898;38899;38900;38901;38902;..;38983}) donne : ({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX}
La fonction MIN permet, ensuite, de ne retenir que la 1° valeur numérique de la matrice résultats = MIN({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX})
Résultat : 38902 N° de série qui correspond au mardi 04/07/06 (le 03/07/06 est défini comme férié)
http://cjoint.com/?iuibkl1kXq
AV
quelle tête de noud je fais, moi! j'aurais quand même dû comprendre tout
ça....
jps (qui n'a plus le cour à l'oeuvrage)
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
u8khU4BxGHA.1888@TK2MSFTNGP03.phx.gbl...
La formule n'ayant de sens que par rapport à la question initiale, rappel
de celle-ci (fil du 18/08/2006 14:13) :
"Trouver le 14ième jour (Xième) après une date D (A1 = 15/06/2006)"
"Si le Xième jour après D tombe un samedi ou un dimanche, ou un jour
au-delà du 28° du mois ou un jour férié (plage de référence pour les jours
fériés), ajouter 1 et cela autant de fois que nécessaire."
L 'idée est donc de créer une série de jours au-delà du Xième demandé et
de retenir le 1° qui répond aux exigences
Tout d'abord, pour des commodités de tests, remplacer 1000 par 100 dans la
formule
Dans la formule, le "noud de la chose" est la partie
$A$1+LIGNE(INDIRECT("14:100"))
C 'est ce qui permet de créer une matrice des jours qui vont de A1 + 14 à
A1 + 100
Ca donne : {38897;38898;38899;38900;38901;38902;..;38983}
Pour visualiser ce résultat intermédiaire, sélectionner dans la barre de
formule $A$1+LIGNE(INDIRECT("14:100")) et faire F9
Au travers de 3 tests logiques, on va chercher quel est la 1° date (le
MIN) de cette série qui respecte, simultanément (fonction ET), les 3
conditions indiquées
Rappel : Dans une formule matricielle, on remplace la fonction ET par
l'opérateur *
1° test : le jour ne doit pas être > au 28° du mois
(JOUR($A$1+LIGNE(INDIRECT("14:100")))<29)
Résultat intermédiaire (visualiser par sélection et F9) :
{FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI}
2° test : le jour ne doit pas être samedi ou dimanche
(JOURSEM($A$1+LIGNE(INDIRECT("14:100"));2)<6)
Résultat intermédiaire (visualiser par sélection et F9) :
{VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX}
3° test : le jour ne doit pas être un jour férié
(ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:100"));JrF; 0))))
Résultat intermédiaire (visualiser par sélection et F9) :
{VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI}
Résultat intermédiaire des 3 tests simultanés (visualiser par sélection et
F9) :
{FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI} *
{VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX} *
{VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI
Dans la formule matricielle, chaque élément de chacune des matrices étant
multiplié par les 2 autres, le résultat renvoyé par XL est :
{0;0;0;0;0;1;..;0}
On voit là, que le 6° jour après la date D + 14 est le 1° qui répond aux 3
conditions simultanées
La fonction SI renverra le "bon" jour en fonction de ces tests logiques :
SI(Tests Logiques = 1 ; Dates)
Résultat intermédiaire de la fonction SI :
SI({0;0;0;0;0;1;..;0};{38897;38898;38899;38900;38901;38902;..;38983})
donne : ({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX}
La fonction MIN permet, ensuite, de ne retenir que la 1° valeur numérique
de la matrice résultats
= MIN({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX})
Résultat : 38902
N° de série qui correspond au mardi 04/07/06 (le 03/07/06 est défini comme
férié)
La formule n'ayant de sens que par rapport à la question initiale, rappel de celle-ci (fil du 18/08/2006 14:13) : "Trouver le 14ième jour (Xième) après une date D (A1 = 15/06/2006)" "Si le Xième jour après D tombe un samedi ou un dimanche, ou un jour au-delà du 28° du mois ou un jour férié (plage de référence pour les jours fériés), ajouter 1 et cela autant de fois que nécessaire."
L 'idée est donc de créer une série de jours au-delà du Xième demandé et de retenir le 1° qui répond aux exigences Tout d'abord, pour des commodités de tests, remplacer 1000 par 100 dans la formule Dans la formule, le "noud de la chose" est la partie $A$1+LIGNE(INDIRECT("14:100")) C 'est ce qui permet de créer une matrice des jours qui vont de A1 + 14 à A1 + 100 Ca donne : {38897;38898;38899;38900;38901;38902;..;38983} Pour visualiser ce résultat intermédiaire, sélectionner dans la barre de formule $A$1+LIGNE(INDIRECT("14:100")) et faire F9
Au travers de 3 tests logiques, on va chercher quel est la 1° date (le MIN) de cette série qui respecte, simultanément (fonction ET), les 3 conditions indiquées Rappel : Dans une formule matricielle, on remplace la fonction ET par l'opérateur *
1° test : le jour ne doit pas être > au 28° du mois (JOUR($A$1+LIGNE(INDIRECT("14:100")))<29) Résultat intermédiaire (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI}
2° test : le jour ne doit pas être samedi ou dimanche (JOURSEM($A$1+LIGNE(INDIRECT("14:100"));2)<6) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX}
3° test : le jour ne doit pas être un jour férié (ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:100"));JrF; 0)))) Résultat intermédiaire (visualiser par sélection et F9) : {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI}
Résultat intermédiaire des 3 tests simultanés (visualiser par sélection et F9) : {FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI} * {VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX} * {VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI Dans la formule matricielle, chaque élément de chacune des matrices étant multiplié par les 2 autres, le résultat renvoyé par XL est : {0;0;0;0;0;1;..;0} On voit là, que le 6° jour après la date D + 14 est le 1° qui répond aux 3 conditions simultanées
La fonction SI renverra le "bon" jour en fonction de ces tests logiques : SI(Tests Logiques = 1 ; Dates) Résultat intermédiaire de la fonction SI : SI({0;0;0;0;0;1;..;0};{38897;38898;38899;38900;38901;38902;..;38983}) donne : ({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX}
La fonction MIN permet, ensuite, de ne retenir que la 1° valeur numérique de la matrice résultats = MIN({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX})
Résultat : 38902 N° de série qui correspond au mardi 04/07/06 (le 03/07/06 est défini comme férié)
http://cjoint.com/?iuibkl1kXq
AV
J
quelle tête de noud je fais, moi! j'aurais quand même dû comprendre tout ça.... jps (qui n'a plus le cour à l'oeuvrage)
C'était quand même évident : C'est pourquoi votre fille est muette ! Mot lierre. J Ouh là là (un peu taquin)
quelle tête de noud je fais, moi! j'aurais quand même dû comprendre tout
ça....
jps (qui n'a plus le cour à l'oeuvrage)
C'était quand même évident :
C'est pourquoi votre fille est muette ! Mot lierre.
J Ouh là là (un peu taquin)