OVH Cloud OVH Cloud

Décompte de ligne avec condition

15 réponses
Avatar
Vincent J.
Bonjour,

J'ai un tableau qui comporte plusieurs centaines de lignes et en
simplifiant 3 colonnes.
Une colonne A qui comporte des 0, 1 ou 2 ; une colonne B qui comporte une
date et une colonne C qui comporte une autre date. (Dates sous forme
JJ/MM/AAAA)

Il m'a déjà été expiqué comment faire pour compter le nombre de ligne dans
la colonne A qui comporte le chiffre 0, le chiffre 1 ou le chiffre 2.
Formule utilisée:
=NB.SI(Feuille2!A:A;Données!A3)
Ou Feuille2!A:A est la colonne comportant les 0,1,2 et Données!A3 est la
référence à une cellule comportant la valeur à recherchée (ici, 1)

J'aimerai savoir comment faire pour ajouter une condition à ce décompte?
C'est à dire: Je souhaite connaitre le nombre de ligne dans le tableau pour
lequel la colonne A est égale à 1 ET que la différence entre la colonne B et
C soit inférieur ou égale à 10 années...

Merci de votre aide.

Vincent

10 réponses

1 2
Avatar
JB
On 5 fév, 12:18, "Vincent J." wrote:
Bonjour,

J'ai un tableau qui comporte plusieurs centaines de lignes et en
simplifiant 3 colonnes.
Une colonne A qui comporte des 0, 1 ou 2 ; une colonne B qui comporte une
date et une colonne C qui comporte une autre date. (Dates sous forme
JJ/MM/AAAA)

Il m'a déjà été expiqué comment faire pour compter le nombre de ligne dans
la colonne A qui comporte le chiffre 0, le chiffre 1 ou le chiffre 2.
Formule utilisée:
=NB.SI(Feuille2!A:A;Données!A3)
Ou Feuille2!A:A est la colonne comportant les 0,1,2 et Données!A3 est la
référence à une cellule comportant la valeur à recherchée (ici, 1)

J'aimerai savoir comment faire pour ajouter une condition à ce décomp te?
C'est à dire: Je souhaite connaitre le nombre de ligne dans le tableau pour
lequel la colonne A est égale à 1 ET que la différence entre la col onne B et
C soit inférieur ou égale à 10 années...

Merci de votre aide.

Vincent
Bonjour,


=SOMMEPROD((cola=1)*(colc-colb>))

JB

Avatar
Daniel
Bonjour.
=SOMMEPROD((plagea=1)*(DATEDIF(plagec;plageb;"y")<=9))
Cordialement.
Daniel
"Vincent J." a écrit dans le message de news:

Bonjour,

J'ai un tableau qui comporte plusieurs centaines de lignes et en
simplifiant 3 colonnes.
Une colonne A qui comporte des 0, 1 ou 2 ; une colonne B qui comporte une
date et une colonne C qui comporte une autre date. (Dates sous forme
JJ/MM/AAAA)

Il m'a déjà été expiqué comment faire pour compter le nombre de ligne dans
la colonne A qui comporte le chiffre 0, le chiffre 1 ou le chiffre 2.
Formule utilisée:
=NB.SI(Feuille2!A:A;Données!A3)
Ou Feuille2!A:A est la colonne comportant les 0,1,2 et Données!A3 est la
référence à une cellule comportant la valeur à recherchée (ici, 1)

J'aimerai savoir comment faire pour ajouter une condition à ce décompte?
C'est à dire: Je souhaite connaitre le nombre de ligne dans le tableau
pour lequel la colonne A est égale à 1 ET que la différence entre la
colonne B et C soit inférieur ou égale à 10 années...

Merci de votre aide.

Vincent



Avatar
Vincent J.
J'ai un soucis...

Je pose:
A1: 1
B1: 01/01/2005 (Cellule format *14/03/2001)
C1: 01/01/2007 (Cellule format *14/03/2001)

Si en A2 je tappe: =SOMMEPROD((A1=1)*(DATEDIF(1/1/2007;1/1/2005;"y")>=9)) il
me renvoit un résultat.
Si en A2 je tappe: =SOMMEPROD((A1=1)*(DATEDIF(C1;B1;"y")>=9)) il me renvoit
la réponse suivante: #NOMBRE!

Pourquoi ?

Merci
Vincent
Avatar
Vincent J.
J'annule mon message précedent et pose la question suivante:

Finalement j'utilise la formule suivante:
=SOMMEPROD(((A1:A30)=1)*(DATEDIF((B1:B30);(C1:C30);"y")>))
Sur certaines lignes, la date dans la colonne B n'a pas été renseignée et
apparait sous la forme 0/0/0 ce qui semble faire planter le calcul...
Est-il possible d'integrer une sécuritée qui empeche cette formule de
prendre en compte les lignes pour lequels la colonne B = 0/0/0 ?
Pour info, la date peut apparaitre à 0/0/0 car les données du tableau sont
importées à partir d'un fichier txt généré par un autre soft qui lorsqu'il
lui manque une date la renseigne arbitrairement à 0/0/0.

Merci
Vincent
Avatar
Daniel
Le résultat de ÚTEDIF(1/1/2007;1/1/2005;"y") est incorrect (XL considère
1/1/2007 comme 1 divisé par un divisé par 2007); la syntaxe correcte est :
ÚTEDIF("1/1/2007";"1/1/2005";"y") qui renvoie également #NOMBRE!
La première date doit être la date de départ. Mets donc :
=SOMMEPROD((A1=1)*(DATEDIF(B1;C1;"y")>=9))
Cordialement.
Daniel
"Vincent J." a écrit dans le message de news:

J'ai un soucis...

Je pose:
A1: 1
B1: 01/01/2005 (Cellule format *14/03/2001)
C1: 01/01/2007 (Cellule format *14/03/2001)

Si en A2 je tappe: =SOMMEPROD((A1=1)*(DATEDIF(1/1/2007;1/1/2005;"y")>=9))
il me renvoit un résultat.
Si en A2 je tappe: =SOMMEPROD((A1=1)*(DATEDIF(C1;B1;"y")>=9)) il me
renvoit la réponse suivante: #NOMBRE!

Pourquoi ?

Merci
Vincent



Avatar
Daniel
=SOMMEPROD((A1:A30=1)*SI(ESTNUM(B1:B30);(DATEDIF(B1:B30;C1:C30;"y")>);0))
Daniel
"Vincent J." a écrit dans le message de news:

J'annule mon message précedent et pose la question suivante:

Finalement j'utilise la formule suivante:
=SOMMEPROD(((A1:A30)=1)*(DATEDIF((B1:B30);(C1:C30);"y")>))
Sur certaines lignes, la date dans la colonne B n'a pas été renseignée et
apparait sous la forme 0/0/0 ce qui semble faire planter le calcul...
Est-il possible d'integrer une sécuritée qui empeche cette formule de
prendre en compte les lignes pour lequels la colonne B = 0/0/0 ?
Pour info, la date peut apparaitre à 0/0/0 car les données du tableau sont
importées à partir d'un fichier txt généré par un autre soft qui lorsqu'il
lui manque une date la renseigne arbitrairement à 0/0/0.

Merci
Vincent




Avatar
Vincent J.
=SOMMEPROD((A1:A30=1)*SI(ESTNUM(B1:B30);(DATEDIF(B1:B30;C1:C30;"y")>);0))


J'ai:
A1=1 B1/01/1980 C1/01/2007
A2=1 B2/01/2000 C2/01/2007

Si j'utilise la formule:
=SOMMEPROD((A1=1)*SI(ESTNUM(B1);(DATEDIF(B1;C1;"y")>);0)) il me renvoit
le résultat =1, normal car 27>

Si j'utilise la formule:
=SOMMEPROD((A2=1)*SI(ESTNUM(B2);(DATEDIF(B2;C2;"y")>);0)) il me renvoit
le résultat =0, normal car 7<

Par contre, si je sélectionne plusieurs cellules dans une colonne cela ne
marche pas:
=SOMMEPROD((A1:A2=1)*SI(ESTNUM(B1:B2);(DATEDIF(B1:B2;C1:C2;"y")>);0)) il
me renvoit le résultat 0 ce qui est faux puisque j'ai au moins une ligne (la
première) pour laquelle la différence de date >

La sécurité qui écarte les dates de forme 0/0/0 fonctionne donc bien mais
cela semble empecher de comptabiliser correctement le nombre de ligne du
tableau pour lequel la colonne B n'est pas 0/0/0 ET pour lequel la
différence de date C-B>

Qu'est ce qui ne va pas ?

Merci
Vincent

Avatar
Daniel
Au temps pour moi, prends cette formule matricielle (à valider avec
CTRL+MAJ+Entrée) :
=SOMME((A1:A2=1)*SI(ESTNUM(B1:B2);(DATEDIF(B1:B2;C1:C2;"y")>);0))
Regarde le classeur :
http://cjoint.com/?cfrcIP4Z02
Daniel
"Vincent J." a écrit dans le message de news:
%


=SOMMEPROD((A1:A30=1)*SI(ESTNUM(B1:B30);(DATEDIF(B1:B30;C1:C30;"y")>);0))


J'ai:
A1=1 B1/01/1980 C1/01/2007
A2=1 B2/01/2000 C2/01/2007

Si j'utilise la formule:
=SOMMEPROD((A1=1)*SI(ESTNUM(B1);(DATEDIF(B1;C1;"y")>);0)) il me renvoit
le résultat =1, normal car 27>

Si j'utilise la formule:
=SOMMEPROD((A2=1)*SI(ESTNUM(B2);(DATEDIF(B2;C2;"y")>);0)) il me renvoit
le résultat =0, normal car 7<

Par contre, si je sélectionne plusieurs cellules dans une colonne cela ne
marche pas:
=SOMMEPROD((A1:A2=1)*SI(ESTNUM(B1:B2);(DATEDIF(B1:B2;C1:C2;"y")>);0))
il me renvoit le résultat 0 ce qui est faux puisque j'ai au moins une
ligne (la première) pour laquelle la différence de date >

La sécurité qui écarte les dates de forme 0/0/0 fonctionne donc bien mais
cela semble empecher de comptabiliser correctement le nombre de ligne du
tableau pour lequel la colonne B n'est pas 0/0/0 ET pour lequel la
différence de date C-B>

Qu'est ce qui ne va pas ?

Merci
Vincent





Avatar
Vincent J.
Impeccable !

Par contre pourquoi ça fonctionne bien sur une plage déterminée et mais pas
lorsque l'on définie une colonne complète.

Je m'explique:
La formule
{=SOMME((Feuille2!B1:B10=1)*SI(ESTNUM(Feuille2!L1:L10);(DATEDIF(Feuille2!L1:L10;Feuille3!B1:B10;"y")>);0))}
fonctionne très bien et me retourne la valeur attendue.

Par contre la formule:
=SOMME((Feuille2!B:B=1)*SI(ESTNUM(Feuille2!L:L);(DATEDIF(Feuille2!L:L;Feuille3!B:B;"y")>);0))
ne fonctionne pas et me donne #NOMBRE...
La seule différence c'est qu'au lieu de cibler un nombre de lignes précis,
je définis les colonnes complétes, car lors de l'import des fichiers, je ne
peux pas prévoir le nombre de lignes importées dans le tableau.

Merci pour cette précision

Vincent
Avatar
Vincent J.
J'ai:
A1=1 B1/01/1980
A2=1 B2/01/2000

J'utilise une variante de la formule ci dessus, qui me permet de calculer le
nombre de ligne pour lesquelles A = 1 ET "l'année en cours - B >

{=SOMME((A1:A2=1)*SI(ESTNUM(B1:B2);(DATEDIF(B1:B2;"01/01/2007";"y")>);0))}

Ma problématique, c'est que dans la colonne B, je tombe par moment sur des
dates >01/01/2007, du coup cela plante...
Que faire sur cette formule pour que les lignes pour lesquels B est
supérieur à 01/01/2007 soit exclues du décomptes ?

Merci
Vincent
1 2