Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2011, 07h52   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Par défaut Dates anniversaires définies

Bonjour

Je souhaite inclure dans une case d'un fichier Excel une information me disant que c'est l'anniversaire d'untel.
En fait une fonction qui dit :
si la date système est le 14/12/2011, c'est l'anniversaire de machin
si la date système est le 11/10/2011, c'est l'anniversaire de truc
et ainsi de suite.

Une seule ligne de code me suffit pour exemple, après c'est du copié/collé avec changement des informations.

Merci d'avance pour vos réponses si cela est possible.
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 09h33   #2
Membre habitué
 
Inscription : janvier 2011
Messages : 106
Détails du profil
Informations personnelles :
Âge : 51

Informations forums :
Inscription : janvier 2011
Messages : 106
Points : 137
Points : 137
Bonjour,

Tu ne précises pas si tu cherches une solution par formule ou macro? Tu parles de code ... mais d'une seule ligne!?
Par ailleurs, tu veux faire apparaître l'info dans une "case" ... même s'il y a plusieurs anniversaires simultanés?

Imaginons des noms en A1:A4 et des dates de naissances en B1:B4.
Une solution par formule qui afficherait une mention "anniv" en colonne C:
Code :
=SI(ET(MOIS(AUJOURDHUI())=MOIS(B1);JOUR(AUJOURDHUI())=JOUR(B1));"anniv";"")
à placer en C1 et recopier vers le bas

... ou alors
Code :
=SI(TEXTE(AUJOURDHUI();"jj/mm")=TEXTE(B1;"jj/mm");"ANNIV";"")
en C1 et à recopier aussi.

Si c'est la liste des noms que tu veux et par formule, il va falloir passer par une formule matricielle (possible, mais pas évident!)

Si c'est une macro que tu recherches, avec la même disposition de données que ci dessus, tu pourrais tester:
Code :
1
2
3
4
5
6
7
8
Private Sub Workbook_Open()
With Sheets(1)
    For Each dat In .Range("b1:b" & .Range("b" & Rows.Count).End(xlUp).Row)
        If Day(dat.Value) = Day(Date) And Month(dat.Value) = Month(Date) Then listeAnniv = listeAnniv & dat.Offset(0, -1).Value & Chr(10)
    Next dat
End With
MsgBox listeAnniv
End Sub
... la macro s'exécuterait à chaque ouverture du fichier et afficherait la liste des noms dans une boîte de dialogue.
__________________
.
U. Milité
U. Milité est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/12/2011, 13h13   #3
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Bonjour

Bah en fait je ne sais pas commentcela doit se présenter.

Dans une macro par exemple, générer un code qui dirait :
Dans la case h7, si la date système est le 21/12/2011, donc c'est l'anniversaire de machin
Dans la case h7, si la date système est le 19/12/2011, donc c'est l'anniversaire de truc

et ainsi de suite ... mais que tout cela soit configurer sur une seule case

Je sais comment l'appliquer dans Word en vba, dans un userform, mais là excel je nage mais alors d'une force.

Ah oui, mon classeur excel est ensuite enregistré en Page web, je ne sais pas si cela à son importance ...
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 03h49   #4
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Bonjour

Mon problème serait-il difficile ???
Alors j'ai trouvé comment mettre la date système ... c'est déjà ça !!!

En fait je cherche à attribué un script dans ce genre (style Word) :
Code :
1
2
3
If H10.text = 28/12/2011 then H11.text = Céline
If H10.text = 19/05/2011 then H11.text = Antoine
If H10.text = 25/04/2011 then H11.text = Stéphane
Mais ceci bien sûr avec ce qu'il faut avant et après pour que le code soit complet.

Merci d'avance
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 09h25   #5
Membre confirmé
 
Homme Denis Morena
Technicien qualité et métrologie industrielle
Inscription : avril 2011
Messages : 115
Détails du profil
Informations personnelles :
Nom : Homme Denis Morena
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Technicien qualité et métrologie industrielle
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 115
Points : 221
Points : 221
Bonjour,

quand es-que tu veux que le code s'exécute ?

J'imagine que tu as mis dans H10 : Si oui tu peux utiliser ça : (La macro s'exécute lorsque l'onglet est activé)

Code :
1
2
3
4
5
6
7
Private Sub Worksheet_Activate()
 
    If Range("H10").Value = "28/12/2011" Then Range("H11") = "Céline"
    If Range("H10").Value = "19/05/2011" Then Range("H11") = "Antoine"
    If Range("H10").Value = "25/04/2011" Then Range("H11") = "Stéphane"
 
End Sub
à mettre dans : ALT+F11, Microsoft Excel Objets et tu double clic sur la feuille correspondante.

Sinon : (La macro s'exécute lorsque le classeur est ouvert)

Code :
1
2
3
4
5
6
7
Private Sub Workbook_Open()
 
    If Range("H10").Value = "28/12/2011" Then Range("H11") = "Céline"
    If Range("H10").Value = "19/05/2011" Then Range("H11") = "Antoine"
    If Range("H10").Value = "25/04/2011" Then Range("H11") = "Stéphane"
 
End Sub
à mettre dans : ALT+F11, Microsoft Excel Objets et tu double clic sur "ThisWorkBook".

Après c'est pas vraiment la meilleur solution pour moi puisque pour ajouter des dates d'anniversaire tu va devoir obligatoirement passer par le VBA... De plus en 2012 ça ne marchera plus ! Mais je pense avoir répondu à ta question.

Cordialement
White Mibu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 09h28   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
tu peu simplement utiliser une formule à base de RechercheV.. par exemple :

http://fauconnier.developpez.com/tut...el/recherchev/

mais il faudrait que t'en dise plus sur :
Citation:
Envoyé par vbword Voir le message
...
Ah oui, mon classeur excel est ensuite enregistré en Page web, je ne sais pas si cela à son importance ...
que fait tu de cette page web ? as-tu coché la case 'interactivité' ? à qui est destiné cette page ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 09h44   #7
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 730
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 730
Points : 2 131
Points : 2 131
Bonjour,

Ta question n'est pas compliquée, elle est incomplète...où se trouve les dates et les noms des personnes ?
Que faire si plusieurs personnes on la même date d'anniversaire (question déjà posée par U. Milité) ?

En considérant une feuille nommée BDD, dans la colonne A les dates de naissance, en colonne B les prénoms.
On boucle sur les dates en colonne A qu'on compare à la date du jour, si anniversaire, on ajout le prénom de la persoonne à un message.
Dans l'exemple, le message est écrit en H7 et dans un messagebox (que je préfère)

L'exemple est prévu pour être placé dans le module ThisWorkbook, comme ça la macro s'exécute dès l'ouverture du fichier.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Workbook_Open()
Dim WsC As Worksheet
Dim LaDate As Date
Dim DerLig As Long, R As Long
Dim MonMessage As String
 
Set WsC = Sheets("BDD") 'remplacer ici BDD par le nom de ta feuille
DerLig = WsC.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'Détermine la dernière ligne remplie sur base de la colonne A
WsC.Range("H7") = "" 'Efface le contenu de la cellule H7
MonMessage = "Aujourd'hui, c'est l'anniversaire de: " & vbCrLf
 
 
For R = 2 To DerLig 'boucle sur les lignes remplies (à partir de 2 car ligne 1 = titre)
    LaDate = DateSerial(Year(Date), Month(WsC.Cells(R, 1)), Day(WsC.Cells(R, 1))) 'Calcul la date anniversaire de l'année actuelle
    If LaDate = Date Then 'compare la date calculée à la date du jour
        MonMessage = MonMessage & WsC.Cells(R, 2) & vbCrLf   'Compile le message avec le(s) prénom(s)
    End If
Next R
 
WsC.Range("H7") = MonMessage 'Ecrit en H7 le message avec le(s) prénom(s)
MsgBox MonMessage, vbInformation, "www.ExcelEtVous.Be" 'Affichage d'un MessageBox
 
End Sub
A+
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h44.


 
 
 
 
Partenaires

Hébergement Web