OVH Cloud OVH Cloud

message du jour fête a qui

5 réponses
Avatar
Daniel
Bonjour à tous
J'ai une liste de mes collègues (200personnes) avec leur date de fête et
je voudrait faire une macro qui me donnerais les trois prochaine fête,
cela dans une boite message que j'intègrerais a un autre fichier
a l'ouverture.
Merci

5 réponses

Avatar
Hervé
Salut Daniel,
Un truc dans le genre ?
'-----------
Sub Les3Dates()
Dim Tbl
Dim I As Long, J As Long
Dim Tempo As Date
Dim Max As Long
Dim DateFetes As String

With Worksheets("Feuil1")
Tbl = .Range(.[A1], .[A65536].End(xlUp))
End With

Max = UBound(Tbl, 1)

'Tri croissant du tableau
For I = 1 To Max - 1
For J = I + 1 To Max
If Tbl(I, 1) > Tbl(J, 1) Then
Tempo = Tbl(J, 1)
Tbl(J, 1) = Tbl(I, 1)
Tbl(I, 1) = Tempo
End If
Next J
Next I
J = 0
DateFetes = "Les 3 prochaines fêtes sont :" & _
vbCrLf & vbCrLf

For I = 1 To Max
If Date < Tbl(I, 1) Then
DateFetes = DateFetes & _
Tbl(I, 1) & _
vbCrLf
J = J + 1
End If
If J = 3 Then Exit For
Next I

MsgBox DateFetes

Erase Tbl
End Sub
'----------------

Hervé.

"Daniel" a écrit dans le message news:
AxHWd.2065$
Bonjour à tous
J'ai une liste de mes collègues (200personnes) avec leur date de fête et
je voudrait faire une macro qui me donnerais les trois prochaine fête,
cela dans une boite message que j'intègrerais a un autre fichier
a l'ouverture.
Merci





Avatar
J
Bonjour
j'utilise ce qui suit avec bonheur (auteur entre les ****)
@+
J@@

*****
Ne pas oublier de souhaiter les anniversaires ?
...Pour un utilisateur assidu d'Excel, pas de problème, il suffit de
demander à votre logiciel favori d'envoyer un petit message de rappel à
l'ouverture d'Excel quelques jours avant le jour J.

Une liste des noms et des dates de naissances.
Une macro complémentaire qui à chaque ouverture d'Excel balaie la liste et
se manifeste en cas de besoin.
Et pour une installation confortable et une mise à jour commode, une macro
d'installation / mise à jour.


En pratique,

- ouvrir un nouveau classeur,
- télécharger la feuille de macros "module_anniv.bas" et l'insérer dans un
nouveau module du classeur (par Outils / Macro / Visual Basic Editor /
Fichier / Importer un fichier).
- lancer la macro "création_liste"
- remplir la liste ainsi créée avec les noms et les dates de naissances
- enregistrer le fichier sur le disque dur sous le nom "anniversaires.xls"
- cliquer sur le bouton
- et attendre patiemment la prochaine date d'anniversaire.
(bien que le fichier Excel ne soit plus indispensable, il vaut mieux le
conserver pour pouvoir faire aisément les mises à jour éventuelles)

Comment ça marche ?
- La macro "création_liste" met en forme la page devant servir à stocker les
dates de naissance,
- puis elle crée une macro "WorkbookOpen" dans la page de code de
"ThisWorkbook" qui lance la macro "anniversaire" (celle qui envoie les
messages)
- Et elle crée un bouton permettant de lancer l'implantation de la macro
complémentaire (qui permet d'installer la macro, puis de faire les mises à
jour).

=== Attribute VB_Name = "Module1"

' déc 2000
Sub création_liste()
'créer la ligne d'entêtes
Sheets(1).Select
Cells(1) = "durée ="
Cells(1, 2) = 7
ActiveWorkbook.Names.Add Name:="durée", RefersToR1C1:="þuil1!R1C2"
Cells(1, 2).NumberFormat = """prévenir ""0"" jours avant la date"""
Cells(1, 2).HorizontalAlignment = xlLeft
Cells(2, 1) = "Date"
Cells(2, 2) = "nom"
Cells(3, 1).FormulaR1C1 = "12/4/1975"
Range("A1:B2").Interior.ColorIndex = 34
With Range("A2:B2").Font
.ColorIndex = 41
.FontStyle = "Gras"
.Size = 12
End With
Cells(3, 2) = "Monique"
With Columns("A:B").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
With Columns("A:B").Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
With Columns("A:B").Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
Columns("A:A").ColumnWidth = 7.57
Columns("B:B").ColumnWidth = 49.4
'ajoute un bouton
With ActiveSheet.Buttons.Add(171, 0.75, 135.75, 27.75)
.OnAction = "implante_macro_compl"
.Characters.Text = "Implanter la macro"
End With
'présentation de la page
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayWorkbookTabs = False
End With

'ajoute une macro autoexec dans ThisWorkbook
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
1, "Private Sub Workbook_Open()"
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
2, "anniversaire"
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
3, "End Sub"

End Sub


Sub anniversaire()
'envoie un message à l'ouverture de Excel
Set feuil = ThisWorkbook.Sheets(1)
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 = blabla & Chr(13) & Chr(13) & "Anniversaire de " & feuil.Cells(lin,
2) & " le " & Format(feuil.Cells(lin, 1), "dd mmm")
End If
End If
Next
If blabla <> "" Then MsgBox (blabla)
If ThisWorkbook.Name = "anniversaires.xla" Then ThisWorkbook.Close (False)
End Sub


Sub implante_macro_compl()
'suppr les macro compl "anniversaires" existantes
If Dir(Application.LibraryPath & "anniversaires.xla") <> "" Then
On Error GoTo err
AddIns("anniversaires").Installed = False
err:
On Error GoTo 0
Kill Application.LibraryPath & "anniversaires.xla"
End If
'copier dans le répertoire ds macros complémentaires
ThisWorkbook.SaveCopyAs Application.LibraryPath & "anniversaires.xla"
'transf en macro compl
Workbooks.Open Application.LibraryPath & "anniversaires.xla"
ActiveWorkbook.IsAddin = True
Workbooks("anniversaires.xla").Close (True)
'installer la marco complémentaire
AddIns.Add(Application.LibraryPath & "anniversaires.xla").Installed = True
End Sub
=== ****
Avatar
Daniel
Bonsoir Hervé

J'ai copier cette macro dans un module du fichier et
la boite message me dit seulement que "Les 3 prochaine fête sont : "
mais ne donne pas les dates et les noms, prénoms !
Dans la collonne A : les date
B : le nom
C : le prénom.

Ci tu veut me faire parvenir t'on adresse couriel je peut te faire parvenir
un fichier. " PELLET15 @videotron.ca " (pas d'espace)

Merci

"Hervé" a écrit dans le message de news:

Salut Daniel,
Un truc dans le genre ?
'-----------
Sub Les3Dates()
Dim Tbl
Dim I As Long, J As Long
Dim Tempo As Date
Dim Max As Long
Dim DateFetes As String

With Worksheets("Feuil1")
Tbl = .Range(.[A1], .[A65536].End(xlUp))
End With

Max = UBound(Tbl, 1)

'Tri croissant du tableau
For I = 1 To Max - 1
For J = I + 1 To Max
If Tbl(I, 1) > Tbl(J, 1) Then
Tempo = Tbl(J, 1)
Tbl(J, 1) = Tbl(I, 1)
Tbl(I, 1) = Tempo
End If
Next J
Next I
J = 0
DateFetes = "Les 3 prochaines fêtes sont :" & _
vbCrLf & vbCrLf

For I = 1 To Max
If Date < Tbl(I, 1) Then
DateFetes = DateFetes & _
Tbl(I, 1) & _
vbCrLf
J = J + 1
End If
If J = 3 Then Exit For
Next I

MsgBox DateFetes

Erase Tbl
End Sub
'----------------

Hervé.

"Daniel" a écrit dans le message news:
AxHWd.2065$
Bonjour à tous
J'ai une liste de mes collègues (200personnes) avec leur date de fête et
je voudrait faire une macro qui me donnerais les trois prochaine fête,
cela dans une boite message que j'intègrerais a un autre fichier
a l'ouverture.
Merci









Avatar
J
Bonjour
j'utilise ce qui suit avec bonheur (auteur entre les ****)
@+
J@@ (déjà envoyé à 9:52 de chez moi - il y a plus de 7 heures-, mais rien
n'apparait :-<<< )

*****
Ne pas oublier de souhaiter les anniversaires ?
...Pour un utilisateur assidu d'Excel, pas de problème, il suffit de
demander à votre logiciel favori d'envoyer un petit message de rappel à
l'ouverture d'Excel quelques jours avant le jour J.

Une liste des noms et des dates de naissances.
Une macro complémentaire qui à chaque ouverture d'Excel balaie la liste et
se manifeste en cas de besoin.
Et pour une installation confortable et une mise à jour commode, une macro
d'installation / mise à jour.


En pratique,

- ouvrir un nouveau classeur,
- télécharger la feuille de macros "module_anniv.bas" et l'insérer dans un
nouveau module du classeur (par Outils / Macro / Visual Basic Editor /
Fichier / Importer un fichier).
- lancer la macro "création_liste"
- remplir la liste ainsi créée avec les noms et les dates de naissances
- enregistrer le fichier sur le disque dur sous le nom "anniversaires.xls"
- cliquer sur le bouton
- et attendre patiemment la prochaine date d'anniversaire.
(bien que le fichier Excel ne soit plus indispensable, il vaut mieux le
conserver pour pouvoir faire aisément les mises à jour éventuelles)

Comment ça marche ?
- La macro "création_liste" met en forme la page devant servir à stocker les
dates de naissance,
- puis elle crée une macro "WorkbookOpen" dans la page de code de
"ThisWorkbook" qui lance la macro "anniversaire" (celle qui envoie les
messages)
- Et elle crée un bouton permettant de lancer l'implantation de la macro
complémentaire (qui permet d'installer la macro, puis de faire les mises à
jour).

=== Attribute VB_Name = "Module1"

' déc 2000
Sub création_liste()
'créer la ligne d'entêtes
Sheets(1).Select
Cells(1) = "durée ="
Cells(1, 2) = 7
ActiveWorkbook.Names.Add Name:="durée", RefersToR1C1:="þuil1!R1C2"
Cells(1, 2).NumberFormat = """prévenir ""0"" jours avant la date"""
Cells(1, 2).HorizontalAlignment = xlLeft
Cells(2, 1) = "Date"
Cells(2, 2) = "nom"
Cells(3, 1).FormulaR1C1 = "12/4/1975"
Range("A1:B2").Interior.ColorIndex = 34
With Range("A2:B2").Font
.ColorIndex = 41
.FontStyle = "Gras"
.Size = 12
End With
Cells(3, 2) = "Monique"
With Columns("A:B").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
With Columns("A:B").Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
With Columns("A:B").Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
Columns("A:A").ColumnWidth = 7.57
Columns("B:B").ColumnWidth = 49.4
'ajoute un bouton
With ActiveSheet.Buttons.Add(171, 0.75, 135.75, 27.75)
.OnAction = "implante_macro_compl"
.Characters.Text = "Implanter la macro"
End With
'présentation de la page
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayWorkbookTabs = False
End With

'ajoute une macro autoexec dans ThisWorkbook
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
1, "Private Sub Workbook_Open()"
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
2, "anniversaire"
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
3, "End Sub"

End Sub


Sub anniversaire()
'envoie un message à l'ouverture de Excel
Set feuil = ThisWorkbook.Sheets(1)
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 = blabla & Chr(13) & Chr(13) & "Anniversaire de " & feuil.Cells(lin,
2) & " le " & Format(feuil.Cells(lin, 1), "dd mmm")
End If
End If
Next
If blabla <> "" Then MsgBox (blabla)
If ThisWorkbook.Name = "anniversaires.xla" Then ThisWorkbook.Close (False)
End Sub


Sub implante_macro_compl()
'suppr les macro compl "anniversaires" existantes
If Dir(Application.LibraryPath & "anniversaires.xla") <> "" Then
On Error GoTo err
AddIns("anniversaires").Installed = False
err:
On Error GoTo 0
Kill Application.LibraryPath & "anniversaires.xla"
End If
'copier dans le répertoire ds macros complémentaires
ThisWorkbook.SaveCopyAs Application.LibraryPath & "anniversaires.xla"
'transf en macro compl
Workbooks.Open Application.LibraryPath & "anniversaires.xla"
ActiveWorkbook.IsAddin = True
Workbooks("anniversaires.xla").Close (True)
'installer la marco complémentaire
AddIns.Add(Application.LibraryPath & "anniversaires.xla").Installed = True
End Sub
=== ****


********
"Daniel" a écrit dans le message de news:
AxHWd.2065$
Bonjour à tous
J'ai une liste de mes collègues (200personnes) avec leur date de fête et
je voudrait faire une macro qui me donnerais les trois prochaine fête,
cela dans une boite message que j'intègrerais a un autre fichier
a l'ouverture.
Merci





Avatar
Daniel
Bonjour
Ou je peut trouver le module_anniv.bas
mon couriel est " PELLET15 @videotron.ca " (pas d'espace)
merci

"J@@" a écrit dans le message de news:
%
Bonjour
j'utilise ce qui suit avec bonheur (auteur entre les ****)
@+
J@@ (déjà envoyé à 9:52 de chez moi - il y a plus de 7 heures-, mais rien
n'apparait :-<<< )

*****
Ne pas oublier de souhaiter les anniversaires ?
...Pour un utilisateur assidu d'Excel, pas de problème, il suffit de
demander à votre logiciel favori d'envoyer un petit message de rappel à
l'ouverture d'Excel quelques jours avant le jour J.

Une liste des noms et des dates de naissances.
Une macro complémentaire qui à chaque ouverture d'Excel balaie la liste et
se manifeste en cas de besoin.
Et pour une installation confortable et une mise à jour commode, une macro
d'installation / mise à jour.


En pratique,

- ouvrir un nouveau classeur,
- télécharger la feuille de macros "module_anniv.bas" et l'insérer dans un
nouveau module du classeur (par Outils / Macro / Visual Basic Editor /
Fichier / Importer un fichier).
- lancer la macro "création_liste"
- remplir la liste ainsi créée avec les noms et les dates de naissances
- enregistrer le fichier sur le disque dur sous le nom "anniversaires.xls"
- cliquer sur le bouton
- et attendre patiemment la prochaine date d'anniversaire.
(bien que le fichier Excel ne soit plus indispensable, il vaut mieux le
conserver pour pouvoir faire aisément les mises à jour éventuelles)

Comment ça marche ?
- La macro "création_liste" met en forme la page devant servir à stocker
les
dates de naissance,
- puis elle crée une macro "WorkbookOpen" dans la page de code de
"ThisWorkbook" qui lance la macro "anniversaire" (celle qui envoie les
messages)
- Et elle crée un bouton permettant de lancer l'implantation de la macro
complémentaire (qui permet d'installer la macro, puis de faire les mises à
jour).

=== > Attribute VB_Name = "Module1"

' déc 2000
Sub création_liste()
'créer la ligne d'entêtes
Sheets(1).Select
Cells(1) = "durée ="
Cells(1, 2) = 7
ActiveWorkbook.Names.Add Name:="durée", RefersToR1C1:="þuil1!R1C2"
Cells(1, 2).NumberFormat = """prévenir ""0"" jours avant la date"""
Cells(1, 2).HorizontalAlignment = xlLeft
Cells(2, 1) = "Date"
Cells(2, 2) = "nom"
Cells(3, 1).FormulaR1C1 = "12/4/1975"
Range("A1:B2").Interior.ColorIndex = 34
With Range("A2:B2").Font
.ColorIndex = 41
.FontStyle = "Gras"
.Size = 12
End With
Cells(3, 2) = "Monique"
With Columns("A:B").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
With Columns("A:B").Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
With Columns("A:B").Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 32
End With
Columns("A:A").ColumnWidth = 7.57
Columns("B:B").ColumnWidth = 49.4
'ajoute un bouton
With ActiveSheet.Buttons.Add(171, 0.75, 135.75, 27.75)
.OnAction = "implante_macro_compl"
.Characters.Text = "Implanter la macro"
End With
'présentation de la page
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayWorkbookTabs = False
End With

'ajoute une macro autoexec dans ThisWorkbook
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
1, "Private Sub Workbook_Open()"
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
2, "anniversaire"
ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines
3, "End Sub"

End Sub


Sub anniversaire()
'envoie un message à l'ouverture de Excel
Set feuil = ThisWorkbook.Sheets(1)
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 = blabla & Chr(13) & Chr(13) & "Anniversaire de " &
feuil.Cells(lin,
2) & " le " & Format(feuil.Cells(lin, 1), "dd mmm")
End If
End If
Next
If blabla <> "" Then MsgBox (blabla)
If ThisWorkbook.Name = "anniversaires.xla" Then ThisWorkbook.Close (False)
End Sub


Sub implante_macro_compl()
'suppr les macro compl "anniversaires" existantes
If Dir(Application.LibraryPath & "anniversaires.xla") <> "" Then
On Error GoTo err
AddIns("anniversaires").Installed = False
err:
On Error GoTo 0
Kill Application.LibraryPath & "anniversaires.xla"
End If
'copier dans le répertoire ds macros complémentaires
ThisWorkbook.SaveCopyAs Application.LibraryPath & "anniversaires.xla"
'transf en macro compl
Workbooks.Open Application.LibraryPath & "anniversaires.xla"
ActiveWorkbook.IsAddin = True
Workbooks("anniversaires.xla").Close (True)
'installer la marco complémentaire
AddIns.Add(Application.LibraryPath & "anniversaires.xla").Installed =
True
End Sub
=== > ****


********
"Daniel" a écrit dans le message de news:
AxHWd.2065$
Bonjour à tous
J'ai une liste de mes collègues (200personnes) avec leur date de fête et
je voudrait faire une macro qui me donnerais les trois prochaine fête,
cela dans une boite message que j'intègrerais a un autre fichier
a l'ouverture.
Merci