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

Dates anniversaires

3 réponses
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

3 réponses

Avatar
Infogroup
1 ) Effectivement, la référence après avoir été cochée s'est retrouvée en
début de liste et je ne l'avais pas vu.

2 ) Oui, le fichier Anniversaires.xls a un mot de passe

3 ) Les 3 variables sont bien renseignées, par contre pour la variable
ColEtiq = "[Naissance]"
j'ai une ligne vide dans mon tableau entre l'entête de colonne (
Naissance ) et la première date dans la colonne

Merci encore de bien vouloir me consacrer un peu de ton temps

Infogroup



"MichDenis" a écrit dans le message de
news:
| ajouté Microsoft Activex
| Data Object 2.8 librairy ( depuis, il n'apparait
| plus dans la liste, je pense que c'est normal )

Absolument pas. Le fait de cocher une référence ne la
fait pas disparaître de la liste des références. Au mieux,
elle se retrouve dans le haut de la fenêtre comme les autres
références déjà présentes.

Cela devrait fonctionner pour toutes les versions d'excel 97 - 2007.

As-tu un mot de passe pour ouvrir ton fichier ?
Est-ce que tu as renseigner les 3 variables de la procédure selon ton
environnement ?





"Infogroup" a écrit dans le message de groupe de
discussion :
Bonsoir et merci MichDenis pour tes réponses,

j'ai installé la procédure dans un module standard, ajouté Microsoft
Activex
Data Object 2.8 librairy ( depuis, il n'apparait plus dans la liste, je
pense que c'est normal )

La procédure est appelée dans le Workbook_Open, mais j'ai le message
suivant
:

" Impossible de décoder le fichier " ( voir le message en pièce jointe )
et la partie ci-dessous est surlignée en jaune

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""


Aurais-je oublié ou mal fait quelque chose ?

Merci encore

Cdl

Infogroup


"MichDenis" a écrit dans le message de
news:e%
Bonjour InfoGroup,

3 variables à définir dans la procédure selon ton application.
Tu copies cette procédure dans un module standard.
Tu l'appelle à partir de la procédure événementielle située
dans le ThisWorkbook "Workbook_Open"

Tu dois ajouter au fichier la référence suivante :
"Microsoft Activex Data Object 2.8 librairy"
'-----------------------------------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String
Dim File As String, ColEtiq As String

'********Variables à définir***************
'Fichier sur lequel se fera la requête :
File = "C:UsersDMDocumentsPour Test.xls"

'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "Feuil1"
'Nom de l'étiquette de colonne :
ColEtiq = "[Les Dates]"
'***********************************************

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""

'La requête qui sera exécutée.

Requete = "SELECT " & ColEtiq & " From [" & NomFeuille & "$] " & _
"Where " & ColEtiq & "=#" & DateSerial(Year(Date), _
Month(Date), Day(Date)) & "#"

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Nb = Rst.RecordCount
MsgBox "Il y a " & Nb & " anniversaire(s) aujourd'hui."
End Sub
'-----------------------------------------------------------




"Infogroup" a écrit dans le message de groupe de
discussion : #
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




Avatar
Infogroup
Tu t'assures que le nom du champ a bien la même orthographe
entre l'étiquette de colonne et celui que tu as placé dans la variable
C'est OK



La colonne de tes dates dans ton fichier anniversaire doit être au format
date.
C'est OK



Les lignes complètement vides dans un tableau, ce n'est jamais une bonne
idée.
J'ai supprimé la ligne vide



Néanmoins, j'ai toujours le message d'erreur n°2

Ce n'est pas grave, je vais en rester là

Merci tout de même pour ta disponibilité et tes réponses rapides.
Ça n'a pas été inutile, loin de là, j'ai appris pas mal de choses

Cdl

Infogroup


"MichDenis" a écrit dans le message de
news:
Tu t'assures que le nom du champ a bien la même orthographe
entre l'étiquette de colonne et celui que tu as placé dans la variable.

La colonne de tes dates dans ton fichier anniversaire doit être au format
date.

Les lignes complètement vides dans un tableau, ce n'est jamais une bonne
idée.
D'ailleurs, elles sont totalement inutiles.

Au delà de ça, je ne peux rien faire de plus pour toi.







"Infogroup" a écrit dans le message de groupe de
discussion :
Re-bonsoir MichDenis

Décidément ça parait bien compliqué
J'ai enlevé le mot de passe du fichier et maintenant j'ai le message
suivant
( voir pj )
et la ligne ci-dessous est en jaune

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic





"MichDenis" a écrit dans le message de
news:
Si tu as un mot de passe pour l'ouverture du fichier,
on ne peut utiliser la méthode ADO. Avec ce mot de
passe les possibilités de lire quelque chose dans le
fichier sans l'ouvrir sont très restreintes !!!!



"Infogroup" a écrit dans le message de groupe de
discussion : #
1 ) Effectivement, la référence après avoir été cochée s'est retrouvée en
début de liste et je ne l'avais pas vu.

2 ) Oui, le fichier Anniversaires.xls a un mot de passe

3 ) Les 3 variables sont bien renseignées, par contre pour la variable
ColEtiq = "[Naissance]"
j'ai une ligne vide dans mon tableau entre l'entête de colonne (
Naissance ) et la première date dans la colonne

Merci encore de bien vouloir me consacrer un peu de ton temps

Infogroup



"MichDenis" a écrit dans le message de
news:
| ajouté Microsoft Activex
| Data Object 2.8 librairy ( depuis, il n'apparait
| plus dans la liste, je pense que c'est normal )

Absolument pas. Le fait de cocher une référence ne la
fait pas disparaître de la liste des références. Au mieux,
elle se retrouve dans le haut de la fenêtre comme les autres
références déjà présentes.

Cela devrait fonctionner pour toutes les versions d'excel 97 - 2007.

As-tu un mot de passe pour ouvrir ton fichier ?
Est-ce que tu as renseigner les 3 variables de la procédure selon ton
environnement ?





"Infogroup" a écrit dans le message de groupe de
discussion :
Bonsoir et merci MichDenis pour tes réponses,

j'ai installé la procédure dans un module standard, ajouté Microsoft
Activex
Data Object 2.8 librairy ( depuis, il n'apparait plus dans la liste, je
pense que c'est normal )

La procédure est appelée dans le Workbook_Open, mais j'ai le message
suivant
:

" Impossible de décoder le fichier " ( voir le message en pièce jointe )
et la partie ci-dessous est surlignée en jaune

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""


Aurais-je oublié ou mal fait quelque chose ?

Merci encore

Cdl

Infogroup


"MichDenis" a écrit dans le message de
news:e%
Bonjour InfoGroup,

3 variables à définir dans la procédure selon ton application.
Tu copies cette procédure dans un module standard.
Tu l'appelle à partir de la procédure événementielle située
dans le ThisWorkbook "Workbook_Open"

Tu dois ajouter au fichier la référence suivante :
"Microsoft Activex Data Object 2.8 librairy"
'-----------------------------------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String
Dim File As String, ColEtiq As String

'********Variables à définir***************
'Fichier sur lequel se fera la requête :
File = "C:UsersDMDocumentsPour Test.xls"

'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "Feuil1"
'Nom de l'étiquette de colonne :
ColEtiq = "[Les Dates]"
'***********************************************

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""

'La requête qui sera exécutée.

Requete = "SELECT " & ColEtiq & " From [" & NomFeuille & "$] " & _
"Where " & ColEtiq & "=#" & DateSerial(Year(Date), _
Month(Date), Day(Date)) & "#"

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Nb = Rst.RecordCount
MsgBox "Il y a " & Nb & " anniversaire(s) aujourd'hui."
End Sub
'-----------------------------------------------------------




"Infogroup" a écrit dans le message de groupe
de
discussion : #
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








Avatar
Infogroup
Je ne peux que te tirer mon chapeau !
Ta persévérance m'a tout de même permis d'aller au bout.

Tes 2 fichiers fonctionnent sans problème.
A partir de ton exemple, j'ai simplement mis mon étiquette de colonne sur la
ligne 1 de la feuille concernée ( donc en C1 ) de mon fichier
Anniversaire.xls et à partir de là le fonctionnement est devenu OK

Merci mille fois pour toutes tes nombreuses interventions

Cordialement

Infogroup


"MichDenis" a écrit dans le message de
news:
Tu dézippes le fichier http://cjoint.com/?fhmWmaMEk3

Tu places les 2 fichiers dans le même répertoire,
tu ouvres le fichier " Pour Test1.xls et tu cliques sur le bouton.



"Infogroup" a écrit dans le message de groupe de
discussion :
Tu t'assures que le nom du champ a bien la même orthographe
entre l'étiquette de colonne et celui que tu as placé dans la variable
C'est OK



La colonne de tes dates dans ton fichier anniversaire doit être au format
date.
C'est OK



Les lignes complètement vides dans un tableau, ce n'est jamais une bonne
idée.
J'ai supprimé la ligne vide



Néanmoins, j'ai toujours le message d'erreur n°2

Ce n'est pas grave, je vais en rester là

Merci tout de même pour ta disponibilité et tes réponses rapides.
Ça n'a pas été inutile, loin de là, j'ai appris pas mal de choses

Cdl

Infogroup


"MichDenis" a écrit dans le message de
news:
Tu t'assures que le nom du champ a bien la même orthographe
entre l'étiquette de colonne et celui que tu as placé dans la variable.

La colonne de tes dates dans ton fichier anniversaire doit être au format
date.

Les lignes complètement vides dans un tableau, ce n'est jamais une bonne
idée.
D'ailleurs, elles sont totalement inutiles.

Au delà de ça, je ne peux rien faire de plus pour toi.







"Infogroup" a écrit dans le message de groupe de
discussion :
Re-bonsoir MichDenis

Décidément ça parait bien compliqué
J'ai enlevé le mot de passe du fichier et maintenant j'ai le message
suivant
( voir pj )
et la ligne ci-dessous est en jaune

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic





"MichDenis" a écrit dans le message de
news:
Si tu as un mot de passe pour l'ouverture du fichier,
on ne peut utiliser la méthode ADO. Avec ce mot de
passe les possibilités de lire quelque chose dans le
fichier sans l'ouvrir sont très restreintes !!!!



"Infogroup" a écrit dans le message de groupe de
discussion : #
1 ) Effectivement, la référence après avoir été cochée s'est retrouvée
en
début de liste et je ne l'avais pas vu.

2 ) Oui, le fichier Anniversaires.xls a un mot de passe

3 ) Les 3 variables sont bien renseignées, par contre pour la variable
ColEtiq = "[Naissance]"
j'ai une ligne vide dans mon tableau entre l'entête de colonne (
Naissance ) et la première date dans la colonne

Merci encore de bien vouloir me consacrer un peu de ton temps

Infogroup



"MichDenis" a écrit dans le message de
news:
| ajouté Microsoft Activex
| Data Object 2.8 librairy ( depuis, il n'apparait
| plus dans la liste, je pense que c'est normal )

Absolument pas. Le fait de cocher une référence ne la
fait pas disparaître de la liste des références. Au mieux,
elle se retrouve dans le haut de la fenêtre comme les autres
références déjà présentes.

Cela devrait fonctionner pour toutes les versions d'excel 97 - 2007.

As-tu un mot de passe pour ouvrir ton fichier ?
Est-ce que tu as renseigner les 3 variables de la procédure selon ton
environnement ?





"Infogroup" a écrit dans le message de groupe
de
discussion :
Bonsoir et merci MichDenis pour tes réponses,

j'ai installé la procédure dans un module standard, ajouté Microsoft
Activex
Data Object 2.8 librairy ( depuis, il n'apparait plus dans la liste, je
pense que c'est normal )

La procédure est appelée dans le Workbook_Open, mais j'ai le message
suivant
:

" Impossible de décoder le fichier " ( voir le message en pièce
jointe )
et la partie ci-dessous est surlignée en jaune

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""


Aurais-je oublié ou mal fait quelque chose ?

Merci encore

Cdl

Infogroup


"MichDenis" a écrit dans le message de
news:e%
Bonjour InfoGroup,

3 variables à définir dans la procédure selon ton application.
Tu copies cette procédure dans un module standard.
Tu l'appelle à partir de la procédure événementielle située
dans le ThisWorkbook "Workbook_Open"

Tu dois ajouter au fichier la référence suivante :
"Microsoft Activex Data Object 2.8 librairy"
'-----------------------------------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String
Dim File As String, ColEtiq As String

'********Variables à définir***************
'Fichier sur lequel se fera la requête :
File = "C:UsersDMDocumentsPour Test.xls"

'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "Feuil1"
'Nom de l'étiquette de colonne :
ColEtiq = "[Les Dates]"
'***********************************************

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""

'La requête qui sera exécutée.

Requete = "SELECT " & ColEtiq & " From [" & NomFeuille & "$] " & _
"Where " & ColEtiq & "=#" & DateSerial(Year(Date), _
Month(Date), Day(Date)) & "#"

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Nb = Rst.RecordCount
MsgBox "Il y a " & Nb & " anniversaire(s) aujourd'hui."
End Sub
'-----------------------------------------------------------




"Infogroup" a écrit dans le message de groupe
de
discussion : #
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