Syntaxe requêtes

Résolu
Bonjour,
J'espère être dans la bonne rubrique
J'ai une base de donnée .xls NOM, PRENOM, DATE_N
Je souhaite établir une requête pour trouver tous les NOM qui sont nés dans le mois défini par AUJOURDHUI() et celui qui correspond au jour
Je ne trouve pas la syntaxe qui me permet de faire cela
Merci de votre aide
Philippe

21 réponses

Résumé de la discussion

Le sujet porte sur une demande Excel visant à retrouver les noms dont la date de naissance tombe dans le mois défini par TODAY() et au jour correspondant. Plusieurs solutions sont évoquées: utiliser une formule qui compare MONTH(DATE_N) et DAY(DATE_N) à MONTH(TODAY()) et DAY(TODAY()), ou créer une colonne auxiliaire et filtrer avec TEXT(DATE_N,"MMDD") égal à TEXT(TODAY(),"MMDD"). En pratique, on peut ajouter une colonne de contrôle avec une formule du type =TEXT(DATE_N,"MMDD")=TEXT(TODAY(),"MMDD") puis utiliser un filtre automatique, ou recourir à une macro VBA. Une nuance utile est que le choix entre formule ou macro dépend du volume des données et de la fréquence des exécutions, afin d'éviter les recalculs inutiles.

Bobot (l’IA à votre service)
  1. Je suis rentré @home, mais je suis à l'hôpital de Bastia pour une nuit afin de déterminer si je fais des apnées du sommeil.
    Merci à gbinforme pour son aide précieuse le programme tourne à merveille.
    Mais je n'ai pas trouvé comment reprendre le contact avec lui pour le remercier.
    @ bientôt
    Philippe
    0
    1. Contributeur
      Bonsoir Philippe,

      C'est le dépistage à la mode mais lorsque c'est le cas, le traitement s'avère efficace, alors pas trop de soucis ;-)

      Tu as des réponses à regarder en cliquant sur la petite enveloppe à côté de ton nom en haut de la page ou à cette adresse.

      @ bientôt
      0
  2. Contributeur
    Bonjour,

    Ce n'est pas l'envoi du fichier qui est compliqué mais comme souvent c'est la compréhension réciproque.

    Tu lis mes réponses sur Internet Explorer et Gmail et tu ne trouves pas : c'est normal.

    Alors je te mets directement mon lien et si tu cliques dessus "mon lien"
    tu vas voir le bouton "lui écrire un message"

    Alors sur le message à rédiger tu vas pouvoir mettre le lien vers ton classeur.
    à bientôt.
    0
    1. Contributeur
      Bonjour à tous,

      si je peux me permettre Philippe, c'est sur cette page (ici) que tu dois cliquer sur le pseudo gbinforme (en bleu) qui démarre chacune de ses réponses. Pas dans le mail que tu reçois.

      Et sur IE aussi c'est un simple clic (c'est un lien). Et sur la page qui s'ouvre tu aura un bouton 'Lui écrire un message'

      eric
      0
    2. Contributeur
      Salut Éric,

      Tu peux te permettre parce que tu as débloqué la situation et j'ai bien reçu le classeur.

      Effectivement, c'est un simple clic sur tous les navigateurs mais je m'impatientais tellement d'arriver à trouver la solution que je doublais inutilement ;-)

      à bientôt.
      0
  3. J'utilise Gmail, c'est peut-être pour cela que je ne vois pas jbinforme?
    Merci pour tout
    Quelle galère pour envoyer un fichier!
    Philippe
    0
    1. Internet Explorer
      0
      1. tu prendre la main avec TW?
        0
        1. Ce message vient de recevoir la réponse suivante de gbinforme
          Si je double click sur gbinforme il ne se passe rien
          0
          1. Contributeur
            Quel navigateur utilises-tu pour accéder au site ?

            ps : c'est dans le navigateur qu'il double cliquer pas dans la messagerie que tu reçois
            0
        2. Contributeur
          Bonjour,

          il faut double cliquer sur gbinforme en bleu qui est juste au-dessus de "Bonjour, ", 2 lignes plus haut
          Toujours zen
          La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
          0
          1. Voilà le haut du message, le seul endroit où je vois gbinforme si je double click dessus il ne se passe rien, alors où est gbinforme qu'il faut double clicker?
            Merci
            Philippe

            CommentCaMarche <noreply@commentcamarche.net>

            21:12 (Il y a 1 heure)

            à phil.boucher

            CommentCaMarche

            Bonjour Philippe Boucher,

            Vous avez demandé à recevoir les réponses au message de Philippe Boucher intitulé « Syntaxe requêtes » datant du 13 octobre 2013 à 21:12 posté dans « Excel ».

            Ce message vient de recevoir la réponse suivante de gbinforme :
            0
            1. Contributeur
              Bonjour,

              Je n'obtiens rien quand je click sur ton pseudo.

              Il faut double-cliquer sur "gbinforme" et tu obtiens le bouton "lui écrire un message"
              ensuite s'est un poste normal sauf qu'il est privé comme une messagerie et cela te permet de me mettre le lien de ton classeur.
              0
              1. je n'arrive pas à t'envoyer mon classeur. T'as pas une autre adresse?

                Sinon on va laisser tomber, je ne vais pas te laisser perdre ton temps

                Si je pouvais trouver du Dbase3 qui tourne sous Win7 64 bits le problème serait résolu.

                Là je suis à l'aise pour programmer

                Hélas je pense que ça n'existe plus.

                Dis moi ce que je dois faire

                Merci

                Philippe
                0
                1. Cette macro est celle que j'ai essayé de construire en m'inspirant de ce tu as fait.
                  Apparemment j'ai mal travaillé.
                  Je n'ai pas réussi non plus à t'envoyer mon classeur en MP
                  Je n'obtiens rien quand je click sur ton pseudo.
                  Je ne sais plus ce qu'il faut faire
                  Philippe
                  0
                  1. Voilà le message d'erreur que j'obtiens lorsque j'exécute la macro
                    Sub Anniversaire()
                    '
                    ' Anniversaire Macro
                    ' Private Sub Worksheet_Activate() [base].AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=[Crit], CopyToRange:=[Extr], Unique:=False End Sub
                    '
                    ' Touche de raccourci du clavier: Ctrl+Maj+R
                    '
                    Application.Run "BIRTHDAY.xlsx!Anniversaire"
                    Sheets("BIRTHDAY").Select
                    ActiveWorkbook.SaveAs Filename:= _
                    "D:\Mes Documents\Informatique\Anniversaires\BIRTHDAY.xlsm", FileFormat:= _
                    xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
                    Application.Run "BIRTHDAY.xlsm!Anniversaire"
                    Application.Run "BIRTHDAY.xlsm!Anniversaire"
                    Application.MacroOptions Macro:="Anniversaire", Description:= _
                    "Private Sub Worksheet_Activate()" & Chr(10) & "[base].AdvancedFilter Action:=xlFilterCopy, _" & Chr(10) & "CriteriaRange:=[Crit], CopyToRange:=[Extr], Unique:=False" & Chr(10) & "End Sub" _
                    , ShortcutKey:="R"
                    Application.Run "BIRTHDAY.xlsm!Anniversaire"
                    End Sub
                    Une idée?
                    Merci
                    Philippe
                    0
                    1. Contributeur
                      C'est quoi cette macro que tu nous ressort ?
                      Cela ne correspond nullement à ce que j'ai fait et qui fonctionne :
                      Private Sub Worksheet_Activate()
                      [base].AdvancedFilter Action:=xlFilterCopy, _
                      CriteriaRange:=[Crit], CopyToRange:=[Extr], Unique:=False
                      End Sub
                      C'est peut-être simplissime mais cela fonctionne comme tu as pu le voir dans mon classeur.

                      La macro que tu fournis n'ai pas cohérente et n'a donc aucune chance de fonctionner.

                      Tu n'as pas réussi à m'envoyer ton lien cjoint.com en message personnel ?
                      0
                  2. Contributeur
                    Bonjour,

                    il faut cliquer sur "gbinforme" et tu obtiens ceci :

                    ensuite tu cliques sur le bouton bleu à droite.
                    0
                    1. J'ai bien exécuté la première partie mais
                      Désolé je ne trouve pas ton pseudo?
                      je ne trouve que celui de comment ça marche?
                      Que faire?
                      Philippe
                      0
                      1. Contributeur
                        Bonjour Philippe,

                        Pour éviter de mettre un classeur privé sur le net :
                        - tu vas sur https://www.cjoint.com/
                        - tu parcours ton disque pour trouver le classeur, tu le sélectionnes, puis "ouvrir"
                        - tu coches "privée"
                        - tu cliques sur "Créer le lien cjoint"
                        - tu cliques sur "Copier le lien"

                        Pour m'envoyer le lien tu cliques sur mon pseudo en haut de ce message
                        - tu cliques sur "Lui écrire un message"
                        - tu fais clic droit "coller" dans le corps du message
                        - tu mets un titre et tu envoies comme d'habitude.
                        Lorsque je te répondrais, tu auras en haut à côté de ton nom une enveloppe rouge à ouvrir par clic.

                        à bientôt
                        0
                        1. Merci pour tout mais il doit y avoir une erreur de ma part dans la construction de la macro.
                          Puis-je vous envoyer ce que j'ai fait?
                          Si oui comment
                          Merci Philippe
                          0
                          1. Contributeur
                            Bonjour,

                            Merci du message sympathique.

                            Où est le programme qui fait ça?

                            C'est une toute petite macro dans la feuil2 : une petite explication

                            Ou puis-je mettre ma base de données excel?

                            Dans la feuille nommée DBase ou la laisser dans votre classeur et lui rajouter les points suivants

                            quelle est la méthode pour arriver à cela

                            J'ai essayer de rajouter quelques explications :

                            1 trois plages sont nommées pour ne pas avoir à modifier la macro
                            - "base" la base de façon dynamique avec la fonction DECALER :
                            =DECALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))
                            - "crit" la plage des critères de sélection (2 cellules)
                            - "extr"la plage résultats avec les rubriques souhaitées
                            2 la plage critère dont le contenu de la première ligne est libre en valeur, comporte une formule de sélection en seconde ligne
                            =MOIS(DBase!C2)=MOIS(AUJOURDHUI())
                            3 la macro est mise dans la feuille résultats

                            Voici le classeur avec quelques explications supplémentaires :

                            https://www.cjoint.com/?3JmweRoH7ci

                            N'hésitez pas à questionner si la clarté n'est pas suffisante.
                            Toujours zen
                            La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
                            0
                            1. Bravo encore,
                              Où est le programme qui fait ça?
                              Ou puis-je mettre ma base de données excel?
                              Ou quelle est la méthode pour arriver à cela
                              Merci
                              Philippe
                              0
                              1. Contributeur
                                Bonjour,

                                Voilà un exemple avec une macro événementielle (minimaliste : bravo pour Saint Ex) qui se lance toute seule lorsque tu sélectionnes la feuille mois. Elle exécute un filtre avancé sur la base pour sélectionner les date de naissance du mois.
                                La date du jour, si elle est présente dans la sélection, est colorée par une mise en forme conditionnelle.

                                https://www.cjoint.com/?CJms6cGcBMV

                                Bon test
                                Toujours zen
                                La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
                                0
                                1. Merci pour la réponse et bravo pour Saint Ex.
                                  En fait je souhaiterais faire une marcro qui se lancerait tous les jours automatiquement.
                                  Je pense qu'il faut d'abord ouvrir la base de données, mettre la date jour (AUJOURDHUI()) dans une cellule, en extraire le mois et balayer la base pour déterminer ceux qui sont nés dans ce mois, ensuite faire un autre balayage pour connaître celui ou ceux qui sont nés ce jour.
                                  Donc je pense qu'il faut faire une requête mais je ne trouve pas la syntaxe.
                                  Je faisais avant avec Dbase3 compilé. Mais je ne trouve pas avec Excel
                                  Merci pour votre aide
                                  Philippe
                                  0
                                  • 1
                                  • 2