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

Alerte sur dates

1 réponse
Avatar
Infogroup
Bonjour à tous, je reviens sur mon post du 3 mai auquel Daniel.C m'a apporté
une solution ( merci à lui )

Je voudrais améliorer la macro et pouvoir faire la recherche de dates sans
ouvrir le classeur "Anniversaire.xls"

Merci pour votre aide

Pour mémoire, je rappelle le contenu des messages du 3 mai :

Dans un fichier nommé Anniversaires.xls ( Excel 2003 ) j'ai un ensemble de
dates d'anniversaires pour la famille et les amis.

Je voudrais si c'est possible que dès que j'ouvre un autre fichier qui
s'appelle Pense-bête.xls,
si le fichier Anniversaires.xls n'est pas ouvert, et si une des dates
anniversaire correspond à la date du jour, une alerte apparaisse sous la
forme d'une Msgbox par exemple. Les dates anniversaires se trouvent en
colonne C du fichier Anniversaires.xls.

Si le fichier Anniversaires.xls est ouvert, on ne fait rien.
Quant à la personne dont c'est l'anniversaire, il peut y avoir plusieurs
personnes ayant la même date anniversaire, la seule condition est donc que
lorsqu'on parcours la colonne C où se trouvent les dates anniversaires, dès
que la recherche ( fonction Find ? ) trouve une date étant égale à la date
du jour, une alerte msgbox soit donnée.

Cordialement

Infogroup

1 réponse

Avatar
Daniel.C
Bonjour.
1. Dans Outils, Références, coche "Microsoft ActiveX Data Objects 2.8
Library"
2. Le nom de champ (en C1 du fichier anniversaire) s'appelle "Dates"
dans la macro. Modifier en conséquence.
3. Dans ThisWorkbook, mettre le code suivant :

Private Sub Workbook_Open()
Dim wb As Workbook, c As Range
For Each wb In Workbooks
If wb.Name = "Anniversaire.xls" Then Exit Sub
Next wb
Dim Cn As ADODB.Connection
Dim Fichier As String, Tablo(10000, 1)
Dim NomFeuille As String, texte_SQL As String
'Définit le classeur fermé servant de base de données
Fichier = "c:tempAnniversaire.xls"
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
NomFeuille = "Feuil1"
texte_SQL = "SELECT Dates FROM [" & NomFeuille & "$]"
Set rst = New ADODB.Recordset
Set rst = .Execute(texte_SQL)
rst.MoveFirst
With rst
Do While Not rst.EOF
If !Dates = Date Then
MsgBox "Anniversaire(s) aujourd'hui"
rst.Close
Cn.Close
Set Cn = Nothing
Exit Sub
End If
rst.MoveNext
Loop
End With
rst.Close
End With
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing

End Sub

Cordialement.
Daniel

Bonjour à tous, je reviens sur mon post du 3 mai auquel Daniel.C m'a apporté
une solution ( merci à lui )

Je voudrais améliorer la macro et pouvoir faire la recherche de dates sans
ouvrir le classeur "Anniversaire.xls"

Merci pour votre aide

Pour mémoire, je rappelle le contenu des messages du 3 mai :

Dans un fichier nommé Anniversaires.xls ( Excel 2003 ) j'ai un ensemble de
dates d'anniversaires pour la famille et les amis.

Je voudrais si c'est possible que dès que j'ouvre un autre fichier qui
s'appelle Pense-bête.xls,
si le fichier Anniversaires.xls n'est pas ouvert, et si une des dates
anniversaire correspond à la date du jour, une alerte apparaisse sous la
forme d'une Msgbox par exemple. Les dates anniversaires se trouvent en
colonne C du fichier Anniversaires.xls.

Si le fichier Anniversaires.xls est ouvert, on ne fait rien.
Quant à la personne dont c'est l'anniversaire, il peut y avoir plusieurs
personnes ayant la même date anniversaire, la seule condition est donc que
lorsqu'on parcours la colonne C où se trouvent les dates anniversaires, dès
que la recherche ( fonction Find ? ) trouve une date étant égale à la date
du jour, une alerte msgbox soit donnée.

Cordialement

Infogroup