Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraction matricielle des premiers jours de chaque mois

12 réponses
Avatar
Yves Haenni
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A à partir de A1 de
façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la colonne B dès la
cellule B1.

Tant que je suis dans la même année, la formulle matricielle
{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves

10 réponses

1 2
Avatar
Modeste
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.



Avatar
Yves Haenni
Je me sui peut-être mal exprimé. Voici encore une fois mon problème :

02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d. Ctrl-Shift-Enter.

J'obtiens ainsi au gré des hasards des saisies de dates par exemple les
résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004. C'est
lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le message de
news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.



Avatar
LeSteph
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me mets
des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste qui à
mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais réitérer
et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème :

02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d. Ctrl-Shift-Enter.

J'obtiens ainsi au gré des hasards des saisies de dates par exemple les
résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004. C'est
lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le message de
news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.







Avatar
LeSteph
Bonsoir,
chez moi ta formule ne fonctionne vraiment pas
Le nom dates a été défini
puis j'ai essayé
Cellule par cellule
toutes les cellules
colonne entière
Avec Shift + entrée
avec Ctrl + entrée
avec Ctrl Shift + entrée

Je voulais la complèter par Année

Sinon,
avec bdmin et stxt + des critères cela doit être faisable
mais il faut des colonnes supplémentaires et c'est vraiment trop lourd !
Une fonction personnalisée en VBA doit être faisable.
Idée: à partir des valeurs de la colonne dates
avec une matrice tableau en variant regrouper un sous ensemble de
dates
correspondant au mois et à l'année de la valeur adjacente
puis trouver Min. A suivre...

LeSteph



"LeSteph" a écrit dans le message de
news:40a29b1e$0$20752$
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me mets
des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste qui
à

mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais
réitérer

et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème :

02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d. Ctrl-Shift-Enter.

J'obtiens ainsi au gré des hasards des saisies de dates par exemple les
résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004. C'est
lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le message
de


news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.











Avatar
GD
Bonsoir,
Etonnant ????
notre capacité de reflexion est toute relative....
le peu qu'on en soit pourvue est toujours suffisante, puisque c'est avec
cela que l'on réfléchi !
;-)))

ne pas désespérer ...
en colonne A des dates triées en ordre croissant
en B1 : = A1
en B2 : =SI(OU(MOIS(A2)>MOIS(A1);ANNEE(A2)>ANNEE(A1));A2;"")
puis selectionner le coin inferieur droit de B2
double-clic
(on pourra remplacer "" par 0 , conjointement avec l'option "non affichage
des valeurs 0 ")

et voili :
A B
15/08/2003 15/08/2003

29/08/2003

04/09/2003 04/09/2003

24/09/2003

03/10/2003 03/10/2003

23/10/2003

01/11/2003 01/11/2003

10/11/2003

27/11/2003

03/12/2003 03/12/2003

24/12/2003

02/01/2004 02/01/2004

19/01/2004

06/02/2004 06/02/2004

26/02/2004

28/02/2004

12/03/2004 12/03/2004

22/03/2004

08/04/2004 08/04/2004

30/04/2004

18/05/2004 18/05/2004

21/05/2004

03/06/2004 03/06/2004

13/06/2004

04/07/2004 04/07/2004

13/07/2004

24/07/2004

@+

r"Yves Haenni" a écrit dans le message de
news:40a3ca76$
J'ai réfléchi à la question moi-même. A mon avis, sauf par programmation,
il n'y a pas de solution directe avec Excel. C'est étonnant...

Yves

"LeSteph" a écrit dans le message de
news:40a29b1e$0$20752$
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me
mets


des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste
qui


à
mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais
réitérer

et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème :

02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d. Ctrl-Shift-Enter.

J'obtiens ainsi au gré des hasards des saisies de dates par exemple
les



résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004. C'est
lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le message
de


news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.















Avatar
GD
;-)))
il faudrait voir à régler ton horloge PC
extrait :
From: "Yves Haenni"
Subject: Re: Extraction matricielle des premiers jours de chaque mois
Date: Fri, 14 May 2004 21:18:43 +0200

;-)))
@+

"Yves Haenni" a écrit dans le message de
news:40a3ca76$
J'ai réfléchi à la question moi-même. A mon avis, sauf par programmation,
il n'y a pas de solution directe avec Excel. C'est étonnant...

Yves

"LeSteph" a écrit dans le message de
news:40a29b1e$0$20752$
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me
mets


des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste
qui


à
mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais
réitérer

et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème :

02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d. Ctrl-Shift-Enter.

J'obtiens ainsi au gré des hasards des saisies de dates par exemple
les



résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004. C'est
lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le message
de


news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.















Avatar
Yves Haenni
Bon. Alors je n'ai certainement pas été assez clair dans mon explication.
Je donne maintenant le code complet ci-dessous, suivi de la structure de la
feuille qui contient les adresses et les notes ainsi qu'une note explicative
pour les profs.

Première étape, le code qui régit cette feuille de calcul :
Sub EnvoiUnMail()
'Yves HAENNI :
'
'Ce code envoie les notes contenues dans une feuille de classeur à
différents étudiants
Dim MailAdresse As String
Dim Msg As String
Dim Sujet As String
Dim URLto As String
Dim i As Integer
Dim Titre(10) As String

'On charge d'abord les titres qui devront s'afficher dans chaque message
Range("Début_adresses_e_mail").Select
i = 2
While ActiveCell.Offset(0, i).Value <> ""
Titre(i) = ActiveCell.Offset(0, i).Value
i = i + 1
Wend

'On envoie les mails jusqu'à épuisement des adresses e-mail
Range("Début_adresses_e_mail").Offset(1, 0).Select
While ActiveCell.Value <> ""
MailAdresse = ActiveCell.Value
Sujet = ActiveCell.Offset(0, 1).Value
i = 2
Msg = Chr(13) & Chr(10)

While ActiveCell.Offset(0, i).Value <> ""
'Le code %0A permet de faire un retour de ligne à chaque
nouvelle note
'Si on enlève ce code, les notes se mettent à la queue-leu-leu
Msg = Msg & Titre(i) & " : " & ActiveCell.Offset(0, i).Value & "
" & "%0A"
If Titre(i) = "Moyenne" Then
Msg = Msg & "%0A"
End If

i = i + 1
Wend

URLto = "mailto:" & MailAdresse & "?subject=" & Sujet & "&body=" &
Msg
ActiveWorkbook.FollowHyperlink Address:=URLto

ActiveCell.Offset(1, 0).Select
Wend

End Sub

Deuxième étape, la structure de la feuille ell-même:

Cellule B2 = "Nom"
Cellule C2 = "Début adresse e-mail"
Cellule D2 = "Sujet"
Cellule E2 = "Note1"
Cellule F2 = "Note2"
Cellule G2 = "Note3"
Cellule H2 = "Note4"
Cellule I2 = "Moyenne"
Cellule J2 = "Remarque"

Puis, à chaque ligne qui suit, le nom, l'adresse e-mail, le sujet et les
notes, la moyenne et une remarque pour chaque étudiant.

Remarque importante, la cellule C2 est une cellule nommée
(Début_adresses_e_mail) utilisée dans le code !

Comme je l'ai dit, ce code fonctionne très bien sur Outlook Express.
J'aimerais qu'il fonctionne également sur GroupWise...

Encore merci à toutes et à tous

Yves

"LeSteph" a écrit dans le message de
news:40a3dece$0$12740$
Bonsoir,
chez moi ta formule ne fonctionne vraiment pas
Le nom dates a été défini
puis j'ai essayé
Cellule par cellule
toutes les cellules
colonne entière
Avec Shift + entrée
avec Ctrl + entrée
avec Ctrl Shift + entrée

Je voulais la complèter par Année

Sinon,
avec bdmin et stxt + des critères cela doit être faisable
mais il faut des colonnes supplémentaires et c'est vraiment trop lourd !
Une fonction personnalisée en VBA doit être faisable.
Idée: à partir des valeurs de la colonne dates
avec une matrice tableau en variant regrouper un sous ensemble de
dates
correspondant au mois et à l'année de la valeur adjacente
puis trouver Min. A suivre...

LeSteph



"LeSteph" a écrit dans le message de
news:40a29b1e$0$20752$
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me
mets


des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste
qui


à
mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais
réitérer

et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème :

02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d. Ctrl-Shift-Enter.

J'obtiens ainsi au gré des hasards des saisies de dates par exemple
les



résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004. C'est
lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le message
de


news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.















Avatar
Yves Haenni
Je comprends parfaitement bien ce que tu fais ici. La seule chose, j'aurais
voulu avoir les résultats de suite l'un sous l'autre, alors que ta méthode
laisse des trous...

Merci tout de même!

Yves

"GD" a écrit dans le message de
news:%23$
Bonsoir,
Etonnant ????
notre capacité de reflexion est toute relative....
le peu qu'on en soit pourvue est toujours suffisante, puisque c'est avec
cela que l'on réfléchi !
;-)))

ne pas désespérer ...
en colonne A des dates triées en ordre croissant
en B1 : = A1
en B2 : =SI(OU(MOIS(A2)>MOIS(A1);ANNEE(A2)>ANNEE(A1));A2;"")
puis selectionner le coin inferieur droit de B2
double-clic
(on pourra remplacer "" par 0 , conjointement avec l'option "non affichage
des valeurs 0 ")

et voili :
A B
15/08/2003 15/08/2003

29/08/2003

04/09/2003 04/09/2003

24/09/2003

03/10/2003 03/10/2003

23/10/2003

01/11/2003 01/11/2003

10/11/2003

27/11/2003

03/12/2003 03/12/2003

24/12/2003

02/01/2004 02/01/2004

19/01/2004

06/02/2004 06/02/2004

26/02/2004

28/02/2004

12/03/2004 12/03/2004

22/03/2004

08/04/2004 08/04/2004

30/04/2004

18/05/2004 18/05/2004

21/05/2004

03/06/2004 03/06/2004

13/06/2004

04/07/2004 04/07/2004

13/07/2004

24/07/2004

@+

r"Yves Haenni" a écrit dans le message de
news:40a3ca76$
J'ai réfléchi à la question moi-même. A mon avis, sauf par
programmation,


il n'y a pas de solution directe avec Excel. C'est étonnant...

Yves

"LeSteph" a écrit dans le message de
news:40a29b1e$0$20752$
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me
mets


des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste
qui


à
mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais
réitérer

et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème
:





02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d.
Ctrl-Shift-Enter.





J'obtiens ainsi au gré des hasards des saisies de dates par exemple
les



résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004.
C'est




lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le
message




de
news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.



















Avatar
Yves Haenni
Juste. Merci pour la remarque.

C'est une longue histoire...

Yves

"GD" a écrit dans le message de
news:
;-)))
il faudrait voir à régler ton horloge PC
extrait :
From: "Yves Haenni"
Subject: Re: Extraction matricielle des premiers jours de chaque mois
Date: Fri, 14 May 2004 21:18:43 +0200

;-)))
@+

"Yves Haenni" a écrit dans le message de
news:40a3ca76$
J'ai réfléchi à la question moi-même. A mon avis, sauf par
programmation,


il n'y a pas de solution directe avec Excel. C'est étonnant...

Yves

"LeSteph" a écrit dans le message de
news:40a29b1e$0$20752$
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me
mets


des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste
qui


à
mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais
réitérer

et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème
:





02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d.
Ctrl-Shift-Enter.





J'obtiens ainsi au gré des hasards des saisies de dates par exemple
les



résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004.
C'est




lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le
message




de
news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.



















Avatar
Yves Haenni
Oups, là j'ai fait une erreur. Ce message était destiné à un autre noeud.
Toutes mes excuses !

Yves

"Yves Haenni" a écrit dans le message de
news:40a44b65$
Bon. Alors je n'ai certainement pas été assez clair dans mon explication.
Je donne maintenant le code complet ci-dessous, suivi de la structure de
la

feuille qui contient les adresses et les notes ainsi qu'une note
explicative

pour les profs.

Première étape, le code qui régit cette feuille de calcul :
Sub EnvoiUnMail()
'Yves HAENNI :
'
'Ce code envoie les notes contenues dans une feuille de classeur à
différents étudiants
Dim MailAdresse As String
Dim Msg As String
Dim Sujet As String
Dim URLto As String
Dim i As Integer
Dim Titre(10) As String

'On charge d'abord les titres qui devront s'afficher dans chaque
message

Range("Début_adresses_e_mail").Select
i = 2
While ActiveCell.Offset(0, i).Value <> ""
Titre(i) = ActiveCell.Offset(0, i).Value
i = i + 1
Wend

'On envoie les mails jusqu'à épuisement des adresses e-mail
Range("Début_adresses_e_mail").Offset(1, 0).Select
While ActiveCell.Value <> ""
MailAdresse = ActiveCell.Value
Sujet = ActiveCell.Offset(0, 1).Value
i = 2
Msg = Chr(13) & Chr(10)

While ActiveCell.Offset(0, i).Value <> ""
'Le code %0A permet de faire un retour de ligne à chaque
nouvelle note
'Si on enlève ce code, les notes se mettent à la queue-leu-leu
Msg = Msg & Titre(i) & " : " & ActiveCell.Offset(0, i).Value &
"

" & "%0A"
If Titre(i) = "Moyenne" Then
Msg = Msg & "%0A"
End If

i = i + 1
Wend

URLto = "mailto:" & MailAdresse & "?subject=" & Sujet & "&body=" &
Msg
ActiveWorkbook.FollowHyperlink Address:=URLto

ActiveCell.Offset(1, 0).Select
Wend

End Sub

Deuxième étape, la structure de la feuille ell-même:

Cellule B2 = "Nom"
Cellule C2 = "Début adresse e-mail"
Cellule D2 = "Sujet"
Cellule E2 = "Note1"
Cellule F2 = "Note2"
Cellule G2 = "Note3"
Cellule H2 = "Note4"
Cellule I2 = "Moyenne"
Cellule J2 = "Remarque"

Puis, à chaque ligne qui suit, le nom, l'adresse e-mail, le sujet et les
notes, la moyenne et une remarque pour chaque étudiant.

Remarque importante, la cellule C2 est une cellule nommée
(Début_adresses_e_mail) utilisée dans le code !

Comme je l'ai dit, ce code fonctionne très bien sur Outlook Express.
J'aimerais qu'il fonctionne également sur GroupWise...

Encore merci à toutes et à tous

Yves

"LeSteph" a écrit dans le message de
news:40a3dece$0$12740$
Bonsoir,
chez moi ta formule ne fonctionne vraiment pas
Le nom dates a été défini
puis j'ai essayé
Cellule par cellule
toutes les cellules
colonne entière
Avec Shift + entrée
avec Ctrl + entrée
avec Ctrl Shift + entrée

Je voulais la complèter par Année

Sinon,
avec bdmin et stxt + des critères cela doit être faisable
mais il faut des colonnes supplémentaires et c'est vraiment trop lourd
!


Une fonction personnalisée en VBA doit être faisable.
Idée: à partir des valeurs de la colonne dates
avec une matrice tableau en variant regrouper un sous ensemble
de


dates
correspondant au mois et à l'année de la valeur adjacente
puis trouver Min. A suivre...

LeSteph



"LeSteph" a écrit dans le message de
news:40a29b1e$0$20752$
Bonsoir,
Le pb est compris
mais la formule que tu as donnée à part sur la première occurence me
mets


des #value ou # nombre un peu partout selon la forme matricielle que
j'applique, peut être devrais tu mieux examiner les pistes de Modeste
qui


à
mon sens sont d'une redoutable efficacité.
J'ai testé un peu vite peut être ton exemple ce matin je m'en vais
réitérer

et cogitarer un peu plus et si je trouve quelquechose je reposte avant
d'aller me coucher à moins que d'ici demain...enfin ...
à+
"Yves Haenni" a écrit dans le message de
news:40a273be$
Je me sui peut-être mal exprimé. Voici encore une fois mon problème
:





02.01.04
03.01.04
06.01.04
12.01.04
18.01.04
03.02.04
05.02.04
08.02.04
10.02.04
15.02.04


etc. Ça continue jusqu'en mai 2004 comme ça.

A droite de ces cellules, j'entre les fonction suivantes :
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))
=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))


Mais attention, avec une saisie matricielle, c.-à-d.
Ctrl-Shift-Enter.





J'obtiens ainsi au gré des hasards des saisies de dates par exemple
les



résultats suivants:

02.01.04
03.02.04
10.03.04
03.04.04
09.05.04
02.06.04
08.07.04
01.08.04
06.09.04
12.10.04


Donc, tout marche nickel, tant que je reste dans l'année 2004.
C'est




lorsque je passe à l'année prochaine que ça se gâte...

Encore merci


Yves

"Modeste" a écrit dans le
message




de
news:bcc401c437ef$fe414ba0$
Bonjour,
matricielle ??? (chirogourdiste ;-))))
et pourquoi pas en B1 :
ÚTE(ANNEE(A1);MOIS(A1);1)
ou bien
¡-JOUR(A1)+1
puis recopie vers le bas
non...?
A B
mercredi 1 avril 1998 mercredi 1 avril 1998
samedi 27 juin 1998 lundi 1 juin 1998
mardi 22 septembre 1998 mardi 1 septembre 1998
vendredi 18 décembre 1998 mardi 1 décembre 1998
lundi 15 mars 1999 lundi 1 mars 1999
jeudi 10 juin 1999 mardi 1 juin 1999
dimanche 5 septembre 1999 mercredi 1 septembre 1999
mercredi 1 décembre 1999 mercredi 1 décembre 1999
samedi 26 février 2000 mardi 1 février 2000
mardi 23 mai 2000 lundi 1 mai 2000
vendredi 18 août 2000 mardi 1 août 2000
lundi 13 novembre 2000 mercredi 1 novembre 2000
jeudi 8 février 2001 jeudi 1 février 2001
dimanche 6 mai 2001 mardi 1 mai 2001
mercredi 1 août 2001 mercredi 1 août 2001
samedi 27 octobre 2001 lundi 1 octobre 2001
mardi 22 janvier 2002 mardi 1 janvier 2002
vendredi 19 avril 2002 lundi 1 avril 2002
lundi 15 juillet 2002 lundi 1 juillet 2002
jeudi 10 octobre 2002 mardi 1 octobre 2002
dimanche 5 janvier 2003 mercredi 1 janvier 2003
mercredi 2 avril 2003 mardi 1 avril 2003
samedi 28 juin 2003 dimanche 1 juin 2003
mardi 23 septembre 2003 lundi 1 septembre 2003
vendredi 19 décembre 2003 lundi 1 décembre 2003

-----Message d'origine-----
Bonjour tout le monde,

J'ai une série de dates qui se suivent dans la colonne A
à partir de A1 de

façon chronologique, ceci sur plusieurs années.
Je nomme toutes mes dates dans la colonne A "Dates".

Je désire avoir le premier jour de chaque mois dans la
colonne B dès la

cellule B1.

Tant que je suis dans la même année, la formulle
matricielle

{=MIN(SI(MOIS(Dates)=LIGNE();Dates;""))}
fonctionne à merveille.

Le problème se pose lorsque je passe à l'année suivante.

Suis-je assez clair ?

Merci pour toute aide !

Yves


.



















1 2