- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours, classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" & y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &
y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de la
fonction NB.SI ??
AV
- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours, classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" & y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &
y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de la
fonction NB.SI ??
AV
- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours, classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" & y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &
y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de la
fonction NB.SI ??
AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une formule
qu'une macro.
Je te remercie de ton aide mais je cherche, si possible, plutôt une formule
qu'une macro.
Je te remercie de ton aide mais je cherche, si possible, plutôt une formule
qu'une macro.
Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une formule
qu'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du 1/6/2003 au
31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004 au
31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" a écrit dans le message de
news:- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours, classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" & y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de la
fonction NB.SI ??
AV
Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une formule
qu'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du 1/6/2003 au
31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004 au
31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de
news:ebvBbqXsDHA.3744@TK2MSFTNGP11.phx.gbl...
- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours, classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" & y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &
y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de la
fonction NB.SI ??
AV
Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une formule
qu'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du 1/6/2003 au
31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004 au
31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" a écrit dans le message de
news:- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours, classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" & y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de la
fonction NB.SI ??
AV
Je te remercie de ton aide
Je te remercie de ton aide
Je te remercie de ton aide
Bonjour,
Voici une solution avec des formules. Elle implique de définir au
préalable
quelques noms, auxquelles les formules se réfèrent.
Voici la structure du tableau employé pour les tests (que je peux
t'envoyer
en Bal perso, si tu veux) :
Les dates du 1er juin 2002 au 31 décembre 2003 en colonne C, à partir de
la
ligne 2, la première étant réservée aux titres. Je lme suis arrêté au
31/12/03,
mais il est possible d'aller bien au-delà.
La cellule C1 est nommée "RéfDates"
La colonne C est nommée "Dates"
Les colonnes suivantes portent le nom du salarié en ligne 1, ici
"Moreau" pour la colonne D
"Dubois" pour la colonne E
La fonction EQUIV() permet de déterminer les lignes correspondant aux
4 dates de référence (1er juin N-1, 1er janvier, 31 mai et 31 décembre)
Pour cela le nom "A" est défini ainsi =ANNEE(MAINTENANT()). Il serait
également possible d'utiliser ¡, ce qui permettrait de modifier l'année
de référence sans que cela change automatiquement quand la date passe du
31 décembre au 1er janvier.
Les 2 noms "Année" et "PériodeCA" couvrent les lignes correspondant à la
période concernée, de la colonne C à la dernière du tableau, incluant
ainsi
toutes les colonnes pouvant correspondre à un salarié. :
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) - 1;Dates;0);0):DECALER
(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 - COLONNE(RéfDates))
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) - 1;Dates;0);0)
:DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 - COLONNE(
RéfDates))
J'ai utilisé la cellule A2,nommée "Nom" pour inscrire le nom du salarié
pour lequel on veut des infos.
Avec la fonction DECALER(), il est possible de déterminer la plage corres-
pondant au salarié dont le nom est inscrit en A2 :
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) - COLONNE(
RéfDates);LIGNES(Année);1)
On peut maintanant récupérer le nombre de jours de RTT ou de congés payés
en utilisant
=NB.SI(Année Salarié;"CA")
ou
=NB.SI(PériodeCA Salarié;"RTT")
pour le salarié dont le nom est en A2
ou
=NB.SI(Année Moreau;"CA")
=NB.SI(Année Dubois;"CA")
pour Moreau, Dubois, ...
Dis-moi si tu veux que je t'envoie le classeur de test ?
PS1 - La période du 1er juin de l'année précédente au 31 mai est celle qui
sert de référence pour déterminer les congés acquis. Ceux-ci sont censés
être pris entre le 1er mai et le 30 avril de l'année suivante.
Je pense que c'est plutôt cette période que tu devrais utiliser pour
récapi-
tuler les congés pris.
PS2 - Personnellement, j'aurais employé "CP" plutôt que "CA" réservé en
général au chiffre d'affaires
Résumé des noms :
A =ANNEE(MAINTENANT())
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 -
Dates þuil1!$C:$C
Dubois þuil1!$E:$E
Moreau þuil1!$D:$D
Nom þuil1!$A$2
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 -
COLONNE(RéfDates))
RéfDates þuil1!$C$1
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) -
COLONNE(RéfDates);LIGNES(Année);1)
Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formule
qu'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du
1/6/2003 au
31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004
au
31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" a écrit dans le message de
news:- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours,
classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" &
y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste
songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de
la
fonction NB.SI ??
AV
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour,
Voici une solution avec des formules. Elle implique de définir au
préalable
quelques noms, auxquelles les formules se réfèrent.
Voici la structure du tableau employé pour les tests (que je peux
t'envoyer
en Bal perso, si tu veux) :
Les dates du 1er juin 2002 au 31 décembre 2003 en colonne C, à partir de
la
ligne 2, la première étant réservée aux titres. Je lme suis arrêté au
31/12/03,
mais il est possible d'aller bien au-delà.
La cellule C1 est nommée "RéfDates"
La colonne C est nommée "Dates"
Les colonnes suivantes portent le nom du salarié en ligne 1, ici
"Moreau" pour la colonne D
"Dubois" pour la colonne E
La fonction EQUIV() permet de déterminer les lignes correspondant aux
4 dates de référence (1er juin N-1, 1er janvier, 31 mai et 31 décembre)
Pour cela le nom "A" est défini ainsi =ANNEE(MAINTENANT()). Il serait
également possible d'utiliser ¡, ce qui permettrait de modifier l'année
de référence sans que cela change automatiquement quand la date passe du
31 décembre au 1er janvier.
Les 2 noms "Année" et "PériodeCA" couvrent les lignes correspondant à la
période concernée, de la colonne C à la dernière du tableau, incluant
ainsi
toutes les colonnes pouvant correspondre à un salarié. :
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) - 1;Dates;0);0):DECALER
(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 - COLONNE(RéfDates))
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) - 1;Dates;0);0)
:DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 - COLONNE(
RéfDates))
J'ai utilisé la cellule A2,nommée "Nom" pour inscrire le nom du salarié
pour lequel on veut des infos.
Avec la fonction DECALER(), il est possible de déterminer la plage corres-
pondant au salarié dont le nom est inscrit en A2 :
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) - COLONNE(
RéfDates);LIGNES(Année);1)
On peut maintanant récupérer le nombre de jours de RTT ou de congés payés
en utilisant
=NB.SI(Année Salarié;"CA")
ou
=NB.SI(PériodeCA Salarié;"RTT")
pour le salarié dont le nom est en A2
ou
=NB.SI(Année Moreau;"CA")
=NB.SI(Année Dubois;"CA")
pour Moreau, Dubois, ...
Dis-moi si tu veux que je t'envoie le classeur de test ?
PS1 - La période du 1er juin de l'année précédente au 31 mai est celle qui
sert de référence pour déterminer les congés acquis. Ceux-ci sont censés
être pris entre le 1er mai et le 30 avril de l'année suivante.
Je pense que c'est plutôt cette période que tu devrais utiliser pour
récapi-
tuler les congés pris.
PS2 - Personnellement, j'aurais employé "CP" plutôt que "CA" réservé en
général au chiffre d'affaires
Résumé des noms :
A =ANNEE(MAINTENANT())
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 -
Dates þuil1!$C:$C
Dubois þuil1!$E:$E
Moreau þuil1!$D:$D
Nom þuil1!$A$2
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 -
COLONNE(RéfDates))
RéfDates þuil1!$C$1
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) -
COLONNE(RéfDates);LIGNES(Année);1)
Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formule
qu'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du
1/6/2003 au
31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004
au
31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de
news:ebvBbqXsDHA.3744@TK2MSFTNGP11.phx.gbl...
- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours,
classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" &
y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &
y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste
songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de
la
fonction NB.SI ??
AV
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour,
Voici une solution avec des formules. Elle implique de définir au
préalable
quelques noms, auxquelles les formules se réfèrent.
Voici la structure du tableau employé pour les tests (que je peux
t'envoyer
en Bal perso, si tu veux) :
Les dates du 1er juin 2002 au 31 décembre 2003 en colonne C, à partir de
la
ligne 2, la première étant réservée aux titres. Je lme suis arrêté au
31/12/03,
mais il est possible d'aller bien au-delà.
La cellule C1 est nommée "RéfDates"
La colonne C est nommée "Dates"
Les colonnes suivantes portent le nom du salarié en ligne 1, ici
"Moreau" pour la colonne D
"Dubois" pour la colonne E
La fonction EQUIV() permet de déterminer les lignes correspondant aux
4 dates de référence (1er juin N-1, 1er janvier, 31 mai et 31 décembre)
Pour cela le nom "A" est défini ainsi =ANNEE(MAINTENANT()). Il serait
également possible d'utiliser ¡, ce qui permettrait de modifier l'année
de référence sans que cela change automatiquement quand la date passe du
31 décembre au 1er janvier.
Les 2 noms "Année" et "PériodeCA" couvrent les lignes correspondant à la
période concernée, de la colonne C à la dernière du tableau, incluant
ainsi
toutes les colonnes pouvant correspondre à un salarié. :
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) - 1;Dates;0);0):DECALER
(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 - COLONNE(RéfDates))
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) - 1;Dates;0);0)
:DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 - COLONNE(
RéfDates))
J'ai utilisé la cellule A2,nommée "Nom" pour inscrire le nom du salarié
pour lequel on veut des infos.
Avec la fonction DECALER(), il est possible de déterminer la plage corres-
pondant au salarié dont le nom est inscrit en A2 :
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) - COLONNE(
RéfDates);LIGNES(Année);1)
On peut maintanant récupérer le nombre de jours de RTT ou de congés payés
en utilisant
=NB.SI(Année Salarié;"CA")
ou
=NB.SI(PériodeCA Salarié;"RTT")
pour le salarié dont le nom est en A2
ou
=NB.SI(Année Moreau;"CA")
=NB.SI(Année Dubois;"CA")
pour Moreau, Dubois, ...
Dis-moi si tu veux que je t'envoie le classeur de test ?
PS1 - La période du 1er juin de l'année précédente au 31 mai est celle qui
sert de référence pour déterminer les congés acquis. Ceux-ci sont censés
être pris entre le 1er mai et le 30 avril de l'année suivante.
Je pense que c'est plutôt cette période que tu devrais utiliser pour
récapi-
tuler les congés pris.
PS2 - Personnellement, j'aurais employé "CP" plutôt que "CA" réservé en
général au chiffre d'affaires
Résumé des noms :
A =ANNEE(MAINTENANT())
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 -
Dates þuil1!$C:$C
Dubois þuil1!$E:$E
Moreau þuil1!$D:$D
Nom þuil1!$A$2
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 -
COLONNE(RéfDates))
RéfDates þuil1!$C$1
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) -
COLONNE(RéfDates);LIGNES(Année);1)
Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formule
qu'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du
1/6/2003 au
31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004
au
31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" a écrit dans le message de
news:- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours,
classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" &
y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste
songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de
la
fonction NB.SI ??
AV
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Je te remercie de ton aide
Merci pour le retour
AV
Je te remercie de ton aide
Merci pour le retour
AV
Je te remercie de ton aide
Merci pour le retour
AV
Bonjour Michel
J'ai quelques difficultés à mettre en apllication ta solution.
Je veux bien que tu m'envois le fichier test à en
enlevant NOSWAP
Merci
Gilles
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Voici une solution avec des formules. Elle implique de définir au
préalablequelques noms, auxquelles les formules se réfèrent.
Voici la structure du tableau employé pour les tests (que je peux
t'envoyeren Bal perso, si tu veux) :
Les dates du 1er juin 2002 au 31 décembre 2003 en colonne C, à partir de
laligne 2, la première étant réservée aux titres. Je lme suis arrêté au
31/12/03,mais il est possible d'aller bien au-delà.
La cellule C1 est nommée "RéfDates"
La colonne C est nommée "Dates"
Les colonnes suivantes portent le nom du salarié en ligne 1, ici
"Moreau" pour la colonne D
"Dubois" pour la colonne E
La fonction EQUIV() permet de déterminer les lignes correspondant aux
4 dates de référence (1er juin N-1, 1er janvier, 31 mai et 31 décembre)
Pour cela le nom "A" est défini ainsi =ANNEE(MAINTENANT()). Il serait
également possible d'utiliser ¡, ce qui permettrait de modifier l'année
de référence sans que cela change automatiquement quand la date passe du
31 décembre au 1er janvier.
Les 2 noms "Année" et "PériodeCA" couvrent les lignes correspondant à la
période concernée, de la colonne C à la dernière du tableau, incluant
ainsitoutes les colonnes pouvant correspondre à un salarié. :
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) - 1;Dates;0);0):DECALER
(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 - COLONNE(RéfDates))
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) - 1;Dates;0);0)
:DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 - COLONNE(
RéfDates))
J'ai utilisé la cellule A2,nommée "Nom" pour inscrire le nom du salarié
pour lequel on veut des infos.
Avec la fonction DECALER(), il est possible de déterminer la plage corres-
pondant au salarié dont le nom est inscrit en A2 :
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) - COLONNE(
RéfDates);LIGNES(Année);1)
On peut maintanant récupérer le nombre de jours de RTT ou de congés payés
en utilisant
=NB.SI(Année Salarié;"CA")
ou
=NB.SI(PériodeCA Salarié;"RTT")
pour le salarié dont le nom est en A2
ou
=NB.SI(Année Moreau;"CA")
=NB.SI(Année Dubois;"CA")
pour Moreau, Dubois, ...
Dis-moi si tu veux que je t'envoie le classeur de test ?
PS1 - La période du 1er juin de l'année précédente au 31 mai est celle qui
sert de référence pour déterminer les congés acquis. Ceux-ci sont censés
être pris entre le 1er mai et le 30 avril de l'année suivante.
Je pense que c'est plutôt cette période que tu devrais utiliser pour
récapi-tuler les congés pris.
PS2 - Personnellement, j'aurais employé "CP" plutôt que "CA" réservé en
général au chiffre d'affaires
Résumé des noms :
A =ANNEE(MAINTENANT())
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 -
COLONNE(RéfDates))
Dates þuil1!$C:$C
Dubois þuil1!$E:$E
Moreau þuil1!$D:$D
Nom þuil1!$A$2
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 -COLONNE(RéfDates))
RéfDates þuil1!$C$1
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) -
COLONNE(RéfDates);LIGNES(Année);1)Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formulequ'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du
1/6/2003 au31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004
au31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" a écrit dans le message de
news:- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours,
classéescroisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" &
y1 &":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste
songeur....2 plages nommées avec un opérateur d'intersection comme 1° argument de
lafonction NB.SI ??
AV
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour Michel
J'ai quelques difficultés à mettre en apllication ta solution.
Je veux bien que tu m'envois le fichier test à NOSWAPgilles.se@9online.fr en
enlevant NOSWAP
Merci
Gilles
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:3FC082B0.A052AC01@Suppgaboly.com...
Bonjour,
Voici une solution avec des formules. Elle implique de définir au
préalable
quelques noms, auxquelles les formules se réfèrent.
Voici la structure du tableau employé pour les tests (que je peux
t'envoyer
en Bal perso, si tu veux) :
Les dates du 1er juin 2002 au 31 décembre 2003 en colonne C, à partir de
la
ligne 2, la première étant réservée aux titres. Je lme suis arrêté au
31/12/03,
mais il est possible d'aller bien au-delà.
La cellule C1 est nommée "RéfDates"
La colonne C est nommée "Dates"
Les colonnes suivantes portent le nom du salarié en ligne 1, ici
"Moreau" pour la colonne D
"Dubois" pour la colonne E
La fonction EQUIV() permet de déterminer les lignes correspondant aux
4 dates de référence (1er juin N-1, 1er janvier, 31 mai et 31 décembre)
Pour cela le nom "A" est défini ainsi =ANNEE(MAINTENANT()). Il serait
également possible d'utiliser ¡, ce qui permettrait de modifier l'année
de référence sans que cela change automatiquement quand la date passe du
31 décembre au 1er janvier.
Les 2 noms "Année" et "PériodeCA" couvrent les lignes correspondant à la
période concernée, de la colonne C à la dernière du tableau, incluant
ainsi
toutes les colonnes pouvant correspondre à un salarié. :
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) - 1;Dates;0);0):DECALER
(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 - COLONNE(RéfDates))
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) - 1;Dates;0);0)
:DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 - COLONNE(
RéfDates))
J'ai utilisé la cellule A2,nommée "Nom" pour inscrire le nom du salarié
pour lequel on veut des infos.
Avec la fonction DECALER(), il est possible de déterminer la plage corres-
pondant au salarié dont le nom est inscrit en A2 :
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) - COLONNE(
RéfDates);LIGNES(Année);1)
On peut maintanant récupérer le nombre de jours de RTT ou de congés payés
en utilisant
=NB.SI(Année Salarié;"CA")
ou
=NB.SI(PériodeCA Salarié;"RTT")
pour le salarié dont le nom est en A2
ou
=NB.SI(Année Moreau;"CA")
=NB.SI(Année Dubois;"CA")
pour Moreau, Dubois, ...
Dis-moi si tu veux que je t'envoie le classeur de test ?
PS1 - La période du 1er juin de l'année précédente au 31 mai est celle qui
sert de référence pour déterminer les congés acquis. Ceux-ci sont censés
être pris entre le 1er mai et le 30 avril de l'année suivante.
Je pense que c'est plutôt cette période que tu devrais utiliser pour
récapi-
tuler les congés pris.
PS2 - Personnellement, j'aurais employé "CP" plutôt que "CA" réservé en
général au chiffre d'affaires
Résumé des noms :
A =ANNEE(MAINTENANT())
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 -
COLONNE(RéfDates))
Dates þuil1!$C:$C
Dubois þuil1!$E:$E
Moreau þuil1!$D:$D
Nom þuil1!$A$2
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 -
COLONNE(RéfDates))
RéfDates þuil1!$C$1
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) -
COLONNE(RéfDates);LIGNES(Année);1)
Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formule
qu'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du
1/6/2003 au
31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004
au
31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de
news:ebvBbqXsDHA.3744@TK2MSFTNGP11.phx.gbl...
- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours,
classées
croisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" &
y1 &
":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &
y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste
songeur....
2 plages nommées avec un opérateur d'intersection comme 1° argument de
la
fonction NB.SI ??
AV
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour Michel
J'ai quelques difficultés à mettre en apllication ta solution.
Je veux bien que tu m'envois le fichier test à en
enlevant NOSWAP
Merci
Gilles
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Voici une solution avec des formules. Elle implique de définir au
préalablequelques noms, auxquelles les formules se réfèrent.
Voici la structure du tableau employé pour les tests (que je peux
t'envoyeren Bal perso, si tu veux) :
Les dates du 1er juin 2002 au 31 décembre 2003 en colonne C, à partir de
laligne 2, la première étant réservée aux titres. Je lme suis arrêté au
31/12/03,mais il est possible d'aller bien au-delà.
La cellule C1 est nommée "RéfDates"
La colonne C est nommée "Dates"
Les colonnes suivantes portent le nom du salarié en ligne 1, ici
"Moreau" pour la colonne D
"Dubois" pour la colonne E
La fonction EQUIV() permet de déterminer les lignes correspondant aux
4 dates de référence (1er juin N-1, 1er janvier, 31 mai et 31 décembre)
Pour cela le nom "A" est défini ainsi =ANNEE(MAINTENANT()). Il serait
également possible d'utiliser ¡, ce qui permettrait de modifier l'année
de référence sans que cela change automatiquement quand la date passe du
31 décembre au 1er janvier.
Les 2 noms "Année" et "PériodeCA" couvrent les lignes correspondant à la
période concernée, de la colonne C à la dernière du tableau, incluant
ainsitoutes les colonnes pouvant correspondre à un salarié. :
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) - 1;Dates;0);0):DECALER
(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 - COLONNE(RéfDates))
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) - 1;Dates;0);0)
:DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 - COLONNE(
RéfDates))
J'ai utilisé la cellule A2,nommée "Nom" pour inscrire le nom du salarié
pour lequel on veut des infos.
Avec la fonction DECALER(), il est possible de déterminer la plage corres-
pondant au salarié dont le nom est inscrit en A2 :
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) - COLONNE(
RéfDates);LIGNES(Année);1)
On peut maintanant récupérer le nombre de jours de RTT ou de congés payés
en utilisant
=NB.SI(Année Salarié;"CA")
ou
=NB.SI(PériodeCA Salarié;"RTT")
pour le salarié dont le nom est en A2
ou
=NB.SI(Année Moreau;"CA")
=NB.SI(Année Dubois;"CA")
pour Moreau, Dubois, ...
Dis-moi si tu veux que je t'envoie le classeur de test ?
PS1 - La période du 1er juin de l'année précédente au 31 mai est celle qui
sert de référence pour déterminer les congés acquis. Ceux-ci sont censés
être pris entre le 1er mai et le 30 avril de l'année suivante.
Je pense que c'est plutôt cette période que tu devrais utiliser pour
récapi-tuler les congés pris.
PS2 - Personnellement, j'aurais employé "CP" plutôt que "CA" réservé en
général au chiffre d'affaires
Résumé des noms :
A =ANNEE(MAINTENANT())
Année ÞCALER(RéfDates;EQUIV(DATE(A;1;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;12;31);Dates;0) - 1;256 -
COLONNE(RéfDates))
Dates þuil1!$C:$C
Dubois þuil1!$E:$E
Moreau þuil1!$D:$D
Nom þuil1!$A$2
PériodeCA ÞCALER(RéfDates;EQUIV(DATE(A-1;6;1) -
1;Dates;0);0):DECALER(RéfDates;EQUIV(DATE(A;5;31);Dates;0) - 1;256 -COLONNE(RéfDates))
RéfDates þuil1!$C$1
Salarié ÞCALER(RéfDates;0;COLONNE(INDIRECT(Nom)) -
COLONNE(RéfDates);LIGNES(Année);1)Bonjour AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formulequ'une macro.
Je me suis mal exprimé pour la période des CA(Congés Annuels):
Il s'agit bien du 1er juin de l'année N au 31 mai de l'année N+1
Exemple:
Nous sommes le 23/11/2003> la période CA est du 1/6/2003 au 31/5/2004
Quand nous serons le 1/1/2004 > la période CA est toujours du
1/6/2003 au31/5/2004
Mais dès que nous serons le 1/6/2004 > la période CA devient du 1/6/2004
au31/5/2005
Voici ma formule dans le détail
=NB.SI((_Christian _ca2003_2004);"CA")
avec _Christian correspondant aux cellules de la colonne de
Christian, et _ca2003_2004 ,nommé manuellement, correpondant aux
lignes des dates comprises entre le 1/6/03 et 31/5/04 , et c'est ce
_ca2003_2004 que je cherche à automatiser suivant la date du jour
AUJOUDHUI()
J'espère avoir été plus clair...
Encore merci
Gilles
"AV" a écrit dans le message de
news:- les dates en B2:Bx de "Feuil1"
- elles comprennent au moins toutes celles de l'année en cours,
classéescroisssant (01/01 --> 31/12)
Sub zz_Déf_Noms()
x1 = DateSerial(Year(Date), 4, 30)
x2 = DateSerial(Year(Date), 6, 1)
x3 = DateSerial(Year(Date), 1, 1)
x4 = DateSerial(Year(Date), 12, 31)
y1 = Application.Match(x1 * 1, Range("B1", [B65536].End(3)), 0)
y2 = Application.Match(x2 * 1, Range("B1", [B65536].End(3)), 0)
y3 = Application.Match(x3 * 1, Range("B1", [B65536].End(3)), 0)
y4 = Application.Match(x4 * 1, Range("B1", [B65536].End(3)), 0)
ActiveWorkbook.Names.Add Name:="PERIODECA", RefersTo:="þuil1!$B$" &
y1 &":$B$" & y2
ActiveWorkbook.Names.Add Name:="ANNEE", RefersTo:="þuil1!$B$" & y3 &
":$B$" &y4
End Sub
Remarques :
".....comprise entre le 1juin et le 30 avril de l'année en cours...."
J'ai considéré que tu avais inversé les termes :
"comprise entre le 30 avril et le 1 juin de l'année en cours"
Si c'est pas ça, il faut préciser
A la lecture de tes formules ("qui fonctionnent" ?), je reste
songeur....2 plages nommées avec un opérateur d'intersection comme 1° argument de
lafonction NB.SI ??
AV
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formule
qu'une macro.
Ben compte-tenu de la question initiale, il n'y avait pas d'autre solution
....
Si je comprends (en devinant un peu...), tu cherches à compter les "CA"
pour
Christian dans la période allant du 1/6 de l'année en cours au 31/5 de
l'année
suivante ??
Avec les plages nommées
"Dates" (série de date en lignes - ex: A2:A1000)
"Christian" (plage en ligneS dans lesquelles tu saisis "CA" ou autre
chose - ex:
B2:B1000)
=SOMMEPROD((Dates>ÚTE(ANNEE(AUJOURDHUI());6;1))*(Dates<ÚTE(ANNEE(AUJOURD
))+1;5;31))*(Christian="CA"))
AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formule
qu'une macro.
Ben compte-tenu de la question initiale, il n'y avait pas d'autre solution
....
Si je comprends (en devinant un peu...), tu cherches à compter les "CA"
pour
Christian dans la période allant du 1/6 de l'année en cours au 31/5 de
l'année
suivante ??
Avec les plages nommées
"Dates" (série de date en lignes - ex: A2:A1000)
"Christian" (plage en ligneS dans lesquelles tu saisis "CA" ou autre
chose - ex:
B2:B1000)
=SOMMEPROD((Dates>ÚTE(ANNEE(AUJOURDHUI());6;1))*(Dates<ÚTE(ANNEE(AUJOURD
))+1;5;31))*(Christian="CA"))
AV
Je te remercie de ton aide mais je cherche, si possible, plutôt une
formule
qu'une macro.
Ben compte-tenu de la question initiale, il n'y avait pas d'autre solution
....
Si je comprends (en devinant un peu...), tu cherches à compter les "CA"
pour
Christian dans la période allant du 1/6 de l'année en cours au 31/5 de
l'année
suivante ??
Avec les plages nommées
"Dates" (série de date en lignes - ex: A2:A1000)
"Christian" (plage en ligneS dans lesquelles tu saisis "CA" ou autre
chose - ex:
B2:B1000)
=SOMMEPROD((Dates>ÚTE(ANNEE(AUJOURDHUI());6;1))*(Dates<ÚTE(ANNEE(AUJOURD
))+1;5;31))*(Christian="CA"))
AV