XL 2010 Formulaire de recherche VBA Excel

Messan

XLDnaute Junior
Bonjour mes chefs,
Je vous remercie d'avance pour tout ce que vous faite sur ce forum car vous nous rendez de grands services sur sur ce forum.

Cette fois je viens humblement solliciter votre aide.
Je voudrais créer un tableau qui génère automatiquement l'age en fonction de la date de naissance grace aux formules excel. Donc je voulais créer un formulaire quand je renseigne ou sélection l'age (peut etre seule ou combinée; exemple 10 ans ou 10-14 ans ou 3 à 9 ans), le mois et l'année, que le formulaire me donne le nombre et la liste de ces personnes concernées (c'est à dire affiche les lignes entières concernées du tableau.
Le nom est dans la colonne C et l'age dans la colonne F.

NB: Pour ce qui concernera les formules excel pour générer automatiquement l'age je pourrai m'en occuper.
Je compte sur vous.
 

Messan

XLDnaute Junior
Messan,

Avant de commencer,
Choisir l'âge et le mois ok, mais l'année ça sert à quoi puisqu'on à déjà l'âge ?

@+
Merci
Au fait ce que je voulais c'est du genre comme par exemple trouver le nombre ou la liste des personnes ayant 12 ans en Mars 2020, d'où l'année.
Autres exemples : le nombre d'enfant qui ont ou qui auront entre 15 à 18 ans en Juin 2019 ou 5 ans ou 7 à 8 ans en Décembre 2021 ou 2025 (qui peut faire aussi les projections).
 
C

Compte Supprimé 979

Guest
Re,
Alors pour le nombre de personnes, ça peut être facile
Pour la liste déjà un peu moins 😉
Je regarde ça et reviens vers vous dès que possible
 
Dernière modification par un modérateur:
C

Compte Supprimé 979

Guest
Arf,

Voici une 1ère solution avec Power Query + TCD + Segments

Tout dépend ensuite des installations pack offie que vous avez (avec ou sans PQ)
Sinon il est possible de l'installer (normalement)

@+
 

Pièces jointes

  • Messan_PQ+TCD+Segments.xlsx
    57 KB · Affichages: 6

Messan

XLDnaute Junior
Arf,

Voici une 1ère solution avec Power Query + TCD + Segments

Tout dépend ensuite des installations pack offie que vous avez (avec ou sans PQ)
Sinon il est possible de l'installer (normalement)

@+
Merci beaucoup grand frère pour la peine que vous vous donnez pour moi.
Mais s'il vous plait je ne maitrise pas beaucoup les TCD donc si vous pouvez m'aider avec un userform.
voici une capture type de ce que je voulais.
 

Pièces jointes

  • Capture d’écran 2021-09-11 152609.png
    Capture d’écran 2021-09-11 152609.png
    79.4 KB · Affichages: 15
C

Compte Supprimé 979

Guest
Vous êtes sérieuse 🤔

Vous ne le demandez que maintenant !?
Initialement vous en vouliez que le nombre d'enfants

Voici la fonction que j'avais préparée, vous en faites ce que vous voulez
VB:
' La BdD
Function NbEnfant(ColDate As Range, AgeMin As Integer, AgeMax As Integer, MoisNaissance As Integer, QuelleAnnée As Integer)
  Dim Cel As Range, Cpt As Integer
  Dim AgeAnniv As Integer, DateAnniv As Date
  Application.Volatile
  Cpt = 0
  For Each Cel In ColDate
    If Month(Cel) = MoisNaissance Then
      ' Calculer l'age à l'année choisi de la cellule
      DateAnniv = DateSerial(QuelleAnnée, Month(Cel), Day(Cel))
      AgeAnniv = DateDiff("yyyy", Cel, DateAnniv)
      If AgeAnniv >= AgeMin And AgeAnniv <= AgeMax Then Cpt = Cpt + 1
    End If
  Next Cel
  ' Retourner le nombre d'enfants trouvés
  NbEnfant = Cpt
End Function

Merci de m'avoir fait perdre mon temps :mad: ce sera donc sans moi
Débrouillez vous et faites des demandes plus explicites la prochaine fois 🙄
 

Messan

XLDnaute Junior
Vous êtes sérieuse 🤔

Vous ne le demandez que maintenant !?
Initialement vous en vouliez que le nombre d'enfants

Voici la fonction que j'avais préparée, vous en faites ce que vous voulez
VB:
' La BdD
Function NbEnfant(ColDate As Range, AgeMin As Integer, AgeMax As Integer, MoisNaissance As Integer, QuelleAnnée As Integer)
  Dim Cel As Range, Cpt As Integer
  Dim AgeAnniv As Integer, DateAnniv As Date
  Application.Volatile
  Cpt = 0
  For Each Cel In ColDate
    If Month(Cel) = MoisNaissance Then
      ' Calculer l'age à l'année choisi de la cellule
      DateAnniv = DateSerial(QuelleAnnée, Month(Cel), Day(Cel))
      AgeAnniv = DateDiff("yyyy", Cel, DateAnniv)
      If AgeAnniv >= AgeMin And AgeAnniv <= AgeMax Then Cpt = Cpt + 1
    End If
  Next Cel
  ' Retourner le nombre d'enfants trouvés
  NbEnfant = Cpt
End Function

Merci de m'avoir fait perdre mon temps :mad: ce sera donc sans moi
Débrouillez vous et faites des demandes plus explicites la prochaine fois 🙄
Toutes mes excuses mon grand. Je reconnais que je vous ai beaucoup dérangé mais exccusez moi s'il vous plait.

Je suis entrain de reconstituer mon fichier mais je n'arrive pas à adapter le code. S'il vous plait voici encore mon fichier. Aidez moi à adapter le code s'il vous plait.
Merci d'avance
 

Pièces jointes

  • Classeur1.xlsm
    36.7 KB · Affichages: 8

Statistiques des forums

Discussions
311 719
Messages
2 081 871
Membres
101 828
dernier inscrit
Did-Pan