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

Avertisement des prochaine fête de colègue

11 réponses
Avatar
pellet15
Bonjour =E0 tous

J'ai une liste de mes coll=E8gues (+450personnes) avec leur date de f=EAte
et
je voudrait que la macro me donne les prochaine f=EAte,
cela dans une boite message a l'ouverture.

Voici la proc=E9dure (qui fonctionnais, mais ne fonctionne plus)

Sub anniversaire()
Set feuil =3D ThisWorkbook.Sheets(1)
demi =3D feuil.Range("dur=E9e") / 2
For lin =3D 1 To feuil.Cells.SpecialCells(xlCellTypeLastCell).Row
Set cel =3D feuil.Cells(lin, 1)
If IsDate(cel) Then
If Abs(Now - 1 + demi - DateValue(Day(cel) & " " & Month(cel) & " " &
Year(Now))) < demi _
Or Abs(Now - 1 + demi - DateValue(Day(cel) & " " & Month(cel) & " " &
Year(Now) + 1)) < demi Then
blabla =3D blabla & Chr(13) & Chr(13) & Format(feuil.Cells(lin, 1),
" (ddd) dd mmm") & " =3D " & feuil.Cells(lin, 2) & " " &
feuil.Cells(lin, 3) & " " & feuil.Cells(lin, 5) & " " &
feuil.Cells(lin, 11)
End If
End If
Next
If blabla <> "" Then MsgBox "Anniversaire de " & (blabla)
If ThisWorkbook.Name =3D "anniversaires.xla" Then ThisWorkbook.Close
(False)
If MsgBox("D=E9sirez-vous quitter ...?", vbCritical _
+ vbYesNo, "Attention") =3D vbYes Then
ThisWorkbook.Close True
End If

End Sub
--------------------
ou est mon erreur

PS: j'ai attacher le fichier
http://cjoint.com/?iFqYNgfwTl

Merci

10 réponses

1 2
Avatar
R1
pellet15 wrote on dimanche 31 août 2008 16:52:

Bonjour à tous

J'ai une liste de mes collègues (+450personnes) avec leur date de fête
et
je voudrait que la macro me donne les prochaine fête,
cela dans une boite message a l'ouverture.

Voici la procédure (qui fonctionnais, mais ne fonctionne plus)


je n'ai pas essayé ni analysé ce code mais quand vous dites "ne fonctionne
plus", que se passe-t-il en fait? message d'erreur? aucun affichage?
mauvaise information affichée?
Avatar
pellet15
On 31 août, 11:19, R1 wrote:
pellet15 wrote on dimanche 31 août 2008 16:52:

> Bonjour à tous

> J'ai une liste de mes collègues (+450personnes) avec leur date de f ête
> et
> je voudrait que la macro me donne les prochaine fête,
> cela dans une boite message a l'ouverture.

> Voici la procédure (qui fonctionnais, mais ne fonctionne plus)

je n'ai pas essayé ni analysé ce code mais quand vous dites "ne fonct ionne
plus", que se passe-t-il en fait? message d'erreur? aucun affichage?
mauvaise information affichée?



Bonjour

la boite message ouvre bien mais la liste de 14 prochain jour n'es pas
exacte ,
il me donne des aniversaire qui ne sont pas en ordre.

merci
Avatar
Daniel.C
Bonsoir.
Tu obtiens les noms classés par ordre alphabétique, comme sur la feuille.
Qu'est-ce que tu veux ? un classement par ordre de date ?
Cordialement.
Daniel
"pellet15" a écrit dans le message de news:

On 31 août, 11:19, R1 wrote:
pellet15 wrote on dimanche 31 août 2008 16:52:

> Bonjour à tous

> J'ai une liste de mes collègues (+450personnes) avec leur date de fête
> et
> je voudrait que la macro me donne les prochaine fête,
> cela dans une boite message a l'ouverture.

> Voici la procédure (qui fonctionnais, mais ne fonctionne plus)

je n'ai pas essayé ni analysé ce code mais quand vous dites "ne fonctionne
plus", que se passe-t-il en fait? message d'erreur? aucun affichage?
mauvaise information affichée?



Bonjour

la boite message ouvre bien mais la liste de 14 prochain jour n'es pas
exacte ,
il me donne des aniversaire qui ne sont pas en ordre.

merci
Avatar
pellet15
On 31 août, 14:49, "Daniel.C" wrote:
Bonsoir.
Tu obtiens les noms classés par ordre alphabétique, comme sur la feui lle.
Qu'est-ce que tu veux ? un classement par ordre de date ?
Cordialement.
Daniel
"pellet15" a écrit dans le message de news:

On 31 août, 11:19, R1 wrote:

> pellet15 wrote on dimanche 31 août 2008 16:52:

> > Bonjour à tous

> > J'ai une liste de mes collègues (+450personnes) avec leur date de f ête
> > et
> > je voudrait que la macro me donne les prochaine fête,
> > cela dans une boite message a l'ouverture.

> > Voici la procédure (qui fonctionnais, mais ne fonctionne plus)

> je n'ai pas essayé ni analysé ce code mais quand vous dites "ne fon ctionne
> plus", que se passe-t-il en fait? message d'erreur? aucun affichage?
> mauvaise information affichée?

Bonjour

la boite message ouvre bien mais la liste de 14 prochain jour n'es pas
exacte ,
il me donne des aniversaire qui ne sont pas en ordre.

merci



Bonsoir Daniel.C

Oui avec la prochaine fête en premier.

comment faire?
Merci
Avatar
Francois L
pellet15 a écrit :

Bonjour,

Avant d'attaquer la question du tri, je vois déjà deux problèmes dans
ton projet :

1 Tu affiches tes résultats dans un MsgBox, avec 14 jours tu dépasses
déja la limite de ce qu'il peut afficher. (environ 1024 caractères dixit
l'aide d'Excel).

2 Les jours indiqués pour les dates d'anniversaire (mar), (mer), etc. ne
sont pas bons, il font référence à la date de la colonne A et non à
celle de la date anniversaire...

Tout cela peut-être réglé mais pour le point 1 que préfères tu comme
affichage ? une feuille provisoire, un userform qui imiterait la msgbox ?

Normalement, mes petits camarades devraient t'avoir réglé ça dans la
journée, sinon je regarderai ce soir...

--
François L


On 31 août, 14:49, "Daniel.C" wrote:
Bonsoir.
Tu obtiens les noms classés par ordre alphabétique, comme sur la feuille.
Qu'est-ce que tu veux ? un classement par ordre de date ?
Cordialement.
Daniel
"pellet15" a écrit dans le message de news:

On 31 août, 11:19, R1 wrote:

pellet15 wrote on dimanche 31 août 2008 16:52:
Bonjour à tous
J'ai une liste de mes collègues (+450personnes) avec leur date de fête
et
je voudrait que la macro me donne les prochaine fête,
cela dans une boite message a l'ouverture.
Voici la procédure (qui fonctionnais, mais ne fonctionne plus)


je n'ai pas essayé ni analysé ce code mais quand vous dites "ne fonctionne
plus", que se passe-t-il en fait? message d'erreur? aucun affichage?
mauvaise information affichée?


Bonjour

la boite message ouvre bien mais la liste de 14 prochain jour n'es pas
exacte ,
il me donne des aniversaire qui ne sont pas en ordre.

merci



Bonsoir Daniel.C

Oui avec la prochaine fête en premier.

comment faire?
Merci


Avatar
Mishell
Bonjour.

Pour le classement, le plus simple est d'utiliser la fonction de Tri de
Excel.
Exemple, créer une feuille nommée "Classement". Mettre dans le code VBA de
la feuille Classement le code suivant:

Public Sub Classer()

feuilleactive = ThisWorkbook.ActiveSheet.Name

Sheets("classement").Select
Columns("A:B").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
Range("a1").Select

Sheets(feuilleactive).Select
End Sub

Puis faire appel à la feuille Classement ainsi:

Sub anniversaire()
Sheets("Classement").Cells.ClearContents

Set feuil = ThisWorkbook.Sheets(2)
demi = feuil.Range("durée") / 2
For lin = 1 To feuil.Cells.SpecialCells(xlCellTypeLastCell).Row
Set cel = feuil.Cells(lin, 1)
If IsDate(cel) Then
If Abs(Now - 1 + demi - DateValue(Day(cel) & " " & Month(cel) & " " &
Year(Now))) < demi _
Or Abs(Now - 1 + demi - DateValue(Day(cel) & " " & Month(cel) & " " &
Year(Now) + 1)) < demi Then
blabla = Format(feuil.Cells(lin, 1), " (ddd) dd mmm") & " = " &
feuil.Cells(lin, 2) & " " & feuil.Cells(lin, 3) & " " & feuil.Cells(lin,
5) & " " & feuil.Cells(lin, 11)
ladate = Format(Month(cel), "00") & Format(Day(cel), "00")
r = r + 1
Sheets("Classement").Cells(r, 1) = ladate
Sheets("Classement").Cells(r, 2) = blabla
End If
End If
Next

If r > 0 Then
Call Sheets("classement").Classer

For i = 1 To r
Message = Message & Sheets("Classement").Cells(i, 2) & vbCrLf & vbCrLf
Next

MsgBox "Anniversaire de " & vbCrLf & vbCrLf & Message
End If

If ThisWorkbook.Name = "anniversaires.xla" Then ThisWorkbook.Close (False)
If MsgBox("Désirez-vous quitter ...?", vbCritical _
+ vbYesNo, "Attention") = vbYes Then
ThisWorkbook.Close True
End If

End Sub

Amicalement

Mishell


"pellet15" wrote in message
news:
On 31 août, 14:49, "Daniel.C" wrote:
Bonsoir.
Tu obtiens les noms classés par ordre alphabétique, comme sur la feuille.
Qu'est-ce que tu veux ? un classement par ordre de date ?
Cordialement.
Daniel
"pellet15" a écrit dans le message de news:

On 31 août, 11:19, R1 wrote:

> pellet15 wrote on dimanche 31 août 2008 16:52:

> > Bonjour à tous

> > J'ai une liste de mes collègues (+450personnes) avec leur date de fête
> > et
> > je voudrait que la macro me donne les prochaine fête,
> > cela dans une boite message a l'ouverture.

> > Voici la procédure (qui fonctionnais, mais ne fonctionne plus)

> je n'ai pas essayé ni analysé ce code mais quand vous dites "ne
> fonctionne
> plus", que se passe-t-il en fait? message d'erreur? aucun affichage?
> mauvaise information affichée?

Bonjour

la boite message ouvre bien mais la liste de 14 prochain jour n'es pas
exacte ,
il me donne des aniversaire qui ne sont pas en ordre.

merci



Bonsoir Daniel.C

Oui avec la prochaine fête en premier.

comment faire?
Merci
Avatar
pellet15
Bonjour Mishell

Avec la fonction Trie je ne réusie pas a bien ordonner par date de la
prochaine fête.

Pour faire une autre feuille il faudrait extraire a chaque exécution
de la procédure , du fait que la liste
change (ajout ou retrais de nom).
et ci 14 est trop ont pourait utiliser 9 jour.

http://cjoint.com/?iFqYNgfwTl

Merci
Avatar
Mishell
Voici ce que donne un tri dans la feuille "Classement" que j'ai ajoutée à
ton fichier
http://cjoint.com/?jbsGcLLPGl

Mishell


"pellet15" wrote in message
news:
Bonjour Mishell

Avec la fonction Trie je ne réusie pas a bien ordonner par date de la
prochaine fête.

Pour faire une autre feuille il faudrait extraire a chaque exécution
de la procédure , du fait que la liste
change (ajout ou retrais de nom).
et ci 14 est trop ont pourait utiliser 9 jour.

http://cjoint.com/?iFqYNgfwTl

Merci
Avatar
pellet15
Bonsoir Mishell

Je n'est pas une bonne réponce, la liste qui affiche est pas en ordre
de la prochaine anniversaire.

209 (ven.) 09 févr = Menard L T-Conducteur de machine gr 3-Mat
travaux 57
409 (lun.) 09 avr = Rossignol Camille 52
409 (sam.) 09 avr = Savard Rejean T-Agent - Entretien de la
voie 53
509 (ven.) 09 mai = Drolet Guy 61
509 (lun.) 09 mai = Grenier Antonin T-Soudeur - Atelier de
soudage 48
609 (mar.) 09 juin = Bergeron Alain T-Préposé à l'entretien d es
ponts-P et B 44
709 (ven.) 09 juil = Chouinard Jacques T-Manoeuvre - Équipe de
surnuméraires 54
709 (mar.) 09 juil = Germain Stevens T-Agent - Entretien de la
voie 40
909 (jeu.) 09 sept = Gagnon Gervais Contremaître-Chauffeurs de
camions-grues 53
909 (dim.) 09 sept = Potvin Victorio Serre-frein-Service
marchandises 34
913 (mar.) 13 sept = Gauthier Serge T-Conducteur de machine gr 2-
Mat travaux 47
1209 (ven.) 09 déc = Fournier Jean Soudeur - Atelier de
soudage 52
1209 (sam.) 09 déc = Marcotte M Agent de la voie Cl3 57



Merci
Avatar
Mishell
Bonsoir.

La fonction DateSerial est préférable à DateValue qui est sensible aux
préférences régionales dans Windows.
http://cjoint.com/?jcdwLdzCeT

Mishell



"pellet15" wrote in message
news:
Bonsoir Mishell

Je n'est pas une bonne réponce, la liste qui affiche est pas en ordre
de la prochaine anniversaire.

209 (ven.) 09 févr = Menard L T-Conducteur de machine gr 3-Mat
travaux 57
409 (lun.) 09 avr = Rossignol Camille 52
409 (sam.) 09 avr = Savard Rejean T-Agent - Entretien de la
voie 53
509 (ven.) 09 mai = Drolet Guy 61
509 (lun.) 09 mai = Grenier Antonin T-Soudeur - Atelier de
soudage 48
609 (mar.) 09 juin = Bergeron Alain T-Préposé à l'entretien des
ponts-P et B 44
709 (ven.) 09 juil = Chouinard Jacques T-Manoeuvre - Équipe de
surnuméraires 54
709 (mar.) 09 juil = Germain Stevens T-Agent - Entretien de la
voie 40
909 (jeu.) 09 sept = Gagnon Gervais Contremaître-Chauffeurs de
camions-grues 53
909 (dim.) 09 sept = Potvin Victorio Serre-frein-Service
marchandises 34
913 (mar.) 13 sept = Gauthier Serge T-Conducteur de machine gr 2-
Mat travaux 47
1209 (ven.) 09 déc = Fournier Jean Soudeur - Atelier de
soudage 52
1209 (sam.) 09 déc = Marcotte M Agent de la voie Cl3 57



Merci
1 2