Souhaiter anniversaire (Excel 2003)
Résolu
jean300
Messages postés
374
Date d'inscription
Statut
Membre
Dernière intervention
-
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterai souhaiter les anniversaires qui auront peut-être lieu durant la semaine qui suit leur détection.
Le fichier contient plus ou moins de 300 noms.
Exemple : Semaine détection du 20/08 au 26/08 : (toujours du dimanche au samedi)
Déterminer qui aura son anniversaire dans la semaine suivante.
Soit : Semaine du 27/08 au 02/09 (toujours du dimanche au samedi)
Les semaines se décalant pour suivre le calendrier.
Afficher une Msgbox :
Je souhaite un bon anniversaire à :
Le Nom
Le prénom
La Date de naissance
Indiquant l'âge
Éventuellement :
Aucun anniversaire.
Je souhaiterai de préférence si c'est réalisable une solution par Vba.
En vous remerciant.
ps : je suis débutant en vba
https://www.cjoint.com/c/GHxmFg0Ct1U
Je souhaiterai souhaiter les anniversaires qui auront peut-être lieu durant la semaine qui suit leur détection.
Le fichier contient plus ou moins de 300 noms.
Exemple : Semaine détection du 20/08 au 26/08 : (toujours du dimanche au samedi)
Déterminer qui aura son anniversaire dans la semaine suivante.
Soit : Semaine du 27/08 au 02/09 (toujours du dimanche au samedi)
Les semaines se décalant pour suivre le calendrier.
Afficher une Msgbox :
Je souhaite un bon anniversaire à :
Le Nom
Le prénom
La Date de naissance
Indiquant l'âge
Éventuellement :
Aucun anniversaire.
Je souhaiterai de préférence si c'est réalisable une solution par Vba.
En vous remerciant.
ps : je suis débutant en vba
https://www.cjoint.com/c/GHxmFg0Ct1U
A voir également:
- Souhaiter anniversaire (Excel 2003)
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
6 réponses
Bonjour Jean
Ton fichier avec une macro qui se déclenche à l'ouverture du classeur
https://mon-partage.fr/f/lIZxINID/
Cdlmnt
Via
"L'imagination est plus importante que le savoir." A. Einstein
Ton fichier avec une macro qui se déclenche à l'ouverture du classeur
https://mon-partage.fr/f/lIZxINID/
Cdlmnt
Via
"L'imagination est plus importante que le savoir." A. Einstein
Bonjour via55
Est-il possible d'afficher dans la Msgbox du plus âgé au plus jeune ?
En te remerciant.
Est-il possible d'afficher dans la Msgbox du plus âgé au plus jeune ?
En te remerciant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Bien volontiers
1) Dans ThisWorkbook ces lignes lance la macro anniv à l'ouverture du classeur :
Private Sub Workbook_Open()
anniv
End Sub
2) La macro commentée :
N’hésites pas à me redemander si il y a encore quelque chose d'obscur
Cdlmnt
Via
Bien volontiers
1) Dans ThisWorkbook ces lignes lance la macro anniv à l'ouverture du classeur :
Private Sub Workbook_Open()
anniv
End Sub
2) La macro commentée :
Sub anniv() Dim Ligne As Long, tablo(10) As Variant, age(10) As Integer, tri(10) As Integer ' derniere ligne remplie 2eme colonne Ligne = Sheets("Liste").Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row ' n° de la semaine actuelle cettesemaine = Val(Format(Date, "ww", vbMonday, vbFirstFourDays)) 'Boucle sur les lignes de la base For n = 1 To Ligne 'n° de la semaine de la date de naissance semaine = Val(Format(Range("C" & n), "ww", vbMonday, vbFirstFourDays)) ' si ce n° de semaine est celui de la semaine actuelle augmenté de 1 If semaine = (cettesemaine + 1) Then 'variable x incrémentée x = x + 1 'variable tablo prend valeur n(donc n° de la ligne) tablo(x) = n 'variable age prend la valeur de la différence années entre aujourd'hui et date de naissance age(x) = Year(Date) - Year(Range("C" & n)) ' classement dans tablo par ordre décroissant ' boucle de x à 2 en revenant en arrière For t = x To 2 Step -1 ' si variable age(t) est plus grande que sa précedente on inverse les valeurs des 2 variables de même que celles des 2 variables tablo If age(t) > age(t - 1) Then f = age(t - 1) g = tablo(t - 1) age(t - 1) = age(t) age(t) = f tablo(t - 1) = tablo(t) tablo(t) = g End If Next t End If Next n ' boucle sur toutes les valeurs du tablo For d = 1 To x ' on rajoute au message à afficher après saut de ligne ,les nom, prénom, date de naissance et âge mes = mes & Chr(10) & Range("A" & tablo(d)) & " " & Range("B" & tablo(d)) & " né(e) le " & Range("C" & tablo(d)) & " : " & age(d) & " ans" Next d ' si message est vide alors le message sera Aucun anniversaire sinon ce sera BON anniversaire à suivi du message If mes = "" Then mes = "Aucun anniversaire" Else mes = "BON ANNIVERSAIRE à : " & Chr(10) & mes 'affichage message MsgBox mes End Sub
N’hésites pas à me redemander si il y a encore quelque chose d'obscur
Cdlmnt
Via
Bonjour jean
Le code ne s’exécute pas lors de la saisie en colonne S T ou U (dans lesquelles il n'y a rien d'ailleurs) mais à l'ouverture du classeur
Si tu veux qu'elle s'exécute avant impression dans ThisWorkbook tu remplaces
Private Sub Workbook_Open()
anniv
End Sub
par
Private Sub Workbook_BeforePrint(Cancel As Boolean)
anniv
End Sub
Cdlmnt
Via
Le code ne s’exécute pas lors de la saisie en colonne S T ou U (dans lesquelles il n'y a rien d'ailleurs) mais à l'ouverture du classeur
Si tu veux qu'elle s'exécute avant impression dans ThisWorkbook tu remplaces
Private Sub Workbook_Open()
anniv
End Sub
par
Private Sub Workbook_BeforePrint(Cancel As Boolean)
anniv
End Sub
Cdlmnt
Via
Pourriez vous publier une version de votre tableau en XLS ?
Merci d'avance,
Cordialement,
Alain
Voilà : https://mon-partage.fr/f/QTt64fXd/
Cdlmnt
Via
Cordialement,
Alain
Peux-tu commenter le code stp
Merci