Anniversaire du jour

Bonjour à tous

Jai un fichier Excel 2016 avec les dates de naissances de mes contacts.

Je voudrais trouver les dates anniversaire ( de ce jour et ainsi de suite) de mes contacts

je tourne en rond depuis un moment

Qui à la solution je pense que ce problème est déjà résolu mais je n'ai pas trouvé .

Merci d'avance

Très cordialement

Guy

Bonjour

=DATE(ANNEE(AUJOURDHUI());MOIS(DateNaissance);JOUR(DateNaissance))

Remplacer DateNaissance par la cellule adéquate

Bonjour
Voici une formule pour une MEFC mettant en évidence les dates dont c'est aujourd'hui l'anniversaire

image

=ET(JOUR(AUJOURDHUI())=JOUR(A1);MOIS(AUJOURDHUI())=MOIS(A1))

Sinon, @78Chris, ta proposition a un petit défaut à mon sens : le 29/02/2020 renverra le 01/03/2025. Si on préfère renvoyer le 28/02/2025 on peut utiliser

=MOIS.DECALER(DateNaissance;12*(ANNEE(AUJOURDHUI())-ANNEE(DateNaissance)))

Stéphane

Jai trouvé comment répondre

Merci à tous les deux ,j'ai mis en place les deux formules .

C'est une première étape qui fonctionnent parfaitement je vais tenter un programme qui extrait uniquement les personnes du jour concerné

Encore un grand merci à vous deux

Guy

RE

Sinon, @78Chris, ta proposition a un petit défaut à mon sens : le 29/02/2020 renverra le 01/03/2025. Si on préfère renvoyer le 28/02/2025 on peut utiliser

=MOIS.DECALER(DateNaissance;12*(ANNEE(AUJOURDHUI())-ANNEE(DateNaissance)))

Ah oui !!! j'ai un copain du 29/02. Il ne veut fêter son anniv que tous les 4 ans : il ne ne serait pas content.

Bonjour GUY 62000
Voici ma proposition. Copier le code suivant dans ThisWorkBook

Private Sub Workbook_Open()
    Dim WsC As Worksheet
    Dim LaDate As Date
    Dim DerLig As Long, R As Long, Nbre%
    Dim MonMessage1, MonMessage2 As String
    Nbre = 0
    Set WsC = Sheets("Liste") 'nom de la feuille à adapter
        DerLig = WsC.Range("A" & Rows.Count).End(xlUp).Row 'Détermine la dernière ligne remplie sur base de la colonne A
        MonMessage1 = "Anniversaire(s) à fêter aujourd'hui:" & vbCrLf
        MonMessage2 = "Aujourd'hui, il n'y a aucun anniversaire à fêter!!"

        For R = 2 To DerLig 'boucle sur les lignes remplies (à partir de 2 car ligne 1 = titre)
            LaDate = DateSerial(Year(Date), Month(WsC.Range("F" & R)), Day(WsC.Range("F" & R))) 'Calcul la date anniversaire en colonne F de l'année actuelle
                If LaDate = Date Then 'compare la date calculée à la date du jour
                    MonMessage1 = MonMessage1 & WsC.Range("A" & R) & "-" & WsC.Range("B" & R) & vbCrLf 'Compile le message avec le(s) prénom(s)
                    Nbre = Nbre + 1
                 End If
        Next R
         If Nbre <> 0 Then
            MsgBox MonMessage1, vbInformation, "Anniversaire(s) "  'Affichage du Message1
            Else
           MsgBox MonMessage2, vbInformation, "Anniversaire(s)" 'Affichage du Message2
         End If
End Sub

A adapter avec les bonnes colonnes
Papy Henri

Bonsoir,

une petite contribution en formule et MFC :

@ bientôt

LouReeD

Bonsoir,

raccourcix, pour revenir à votre remarque, on m'a toujours dit que cela porter malheur de fêter son anniversaire la veille, donc personnellement je préfère un 01/03/2025 au 28/02/2025, pour un jour de naissance au 29/02/1960 !

@ bientôt

LouReeD

Bonjour à tous
Pour ne pas être en reste, voici un fichier qui fait le job à l'ouverture.
Tableau structuré comme Base de données.
Cdt
Papy Henri

Bonjour à tous

Le fichier anniversaire fonctionne parfaitement chaque jour .

Je souhaite anticiper de quelques jours (ex 5 jours) la date anniversaire afin d'envoyer une petite carte à mes amis .

J'ai essayer de modifier la notion jour mais je n'ai pas réussi.

Alors je reviens vers vous , merci d'avance de vos solutions

Cordialement

Guy

Bonjour GUY et le forum
Remplacer l'ancien code par celui-ci (prévision 5 jours avant la date réelle):

Private Sub Workbook_Open()
    Dim TS As ListObject
    Dim LaDate As Date
    Dim DerLig As Long, R As Long, Nbre%, ID As String, IDRow As Long
    Dim MonMessage1, MonMessage2 As String
      Nbre = 0
      Set TS = Range("Tableau1").ListObject
    With TS '[Tableau1]
        DerLig = .ListRows.Count
        MonMessage1 = "Anniversaire(s) prévu(s) dans 5 jours: " & vbCrLf
        MonMessage2 = "Aujourd'hui, il n'y a aucun anniversaire à fêter!!"
        For R = 1 To DerLig
              LaDate = DateSerial(Year(Date), Month(.DataBodyRange.Item(R, 3)), Day(.DataBodyRange.Item(R, 3)))
              ID = .DataBodyRange.Item(R, 1)
                IDRow = .DataBodyRange.Find(ID, LookIn:=xlValues, LookAt:=xlWhole).Row - .HeaderRowRange.Row
                If LaDate = Date - 5 Then 'compare la date calculée à la date du jour
                    MonMessage1 = MonMessage1 & .DataBodyRange.Item(IDRow, 1) & "-" & .DataBodyRange.Item(R, 2) & "-" & .DataBodyRange.Item(R, 4) & vbCrLf
                 Nbre = Nbre + 1
                 End If
        Next R
        If Nbre <> 0 Then
            MsgBox MonMessage1, vbInformation, "Texte à adapter" 'Affichage du Message1"
          Else
           MsgBox MonMessage2, vbInformation, "Texte à adapter" 'Affichage du Message2
         End If
         End With
End Sub

Cdt

Papy Henri

Bonjour,

Décidément quelque soit le forum je suis transparent...

Je plaisante !

Sur mon fichier en colonne i je crois ligne 1 on peut choisir le nombre de jour... il se peut que la police soit blanche sur fond blanc...

@ bientôt

LouReeD

Bonjour

C'est un vrai plaisir cette communauté , je suis sur lorsque je pose un "problème" d'avoir plusieurs bonnes réponses.

Alors encore un grand merci à tous et il n'y a pas d'invisible

Très cordialement

Guy

Rechercher des sujets similaires à "anniversaire jour"