Recherche donnees entre 2 dates
Bonjour à tous,
J'aimerai exécuter une macro qui me retourne le nom et prénom des personnes dont l'anniversaire est compris en 2 dates.
Est-ce qu'il y a une âme charitable ?
Exemples dates :
date debut : 20/03/2017
dates fin : 28/03/2017
Tableau exemple :
NOM PRENOM DATE_ANNIVERSAIRE
XXXXXXX Floriane 28/11/1994
XXXXXXX Ivana 29/10/1993
XXXXXXX Marine 23/03/1994
XXXXXXX Mélanie 19/04/1993
XXXXXXX Romain 21/04/1994
XXXXXXX Alyssia 25/05/1994
XXXXXXX Justine 14/01/1994
XXXXXXX Adrien 10/08/1993
XXXXXXX Delphine 23/08/1994
XXXXXXX Aloyse 24/10/1994
XXXXXXX Thibaut 22/03/1992
XXXXXXX Estelle 09/07/1994
XXXXXXX Stephen 10/03/1991
XXXXXXX Arthur 03/09/1994
XXXXXXX Imane 13/05/1993
Bonjour,
Pourquoi te faire "tricoter" une macro sur mesure, alors qu'un filtre pourrait donner les mêmes résultats (voire une formule, éventuellement!)
Bonjour MrBenefik, bonjour le forum,
Une proposition à adapter avec deux boîtes d'entrer pour définir les dates de début et de fin :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DD As Variant 'déclare la variable DD (Date de Début)
Dim DF As Variant 'déclare la variable DF (Date de Fin)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
DD = Application.InputBox("Tapez la date de Début au format JJ/MM/AA.", "DATE DÉBUT", Type:=1) 'définit la date de début DD
If DD = False Then Exit Sub 'si bouton [Annuler], sort de la procédure
DD = CLng(DD) 'redéfinit DD de type entier long
DF = Application.InputBox("Tapez la date de Fin au format JJ/MM/AA.", "DATE FIN", Type:=1) 'définit la date de fin DF
If DF = False Then Exit Sub 'si bouton [Annuler], sort de la procédure
DF = CLng(DF) 'redéfinit DF de type entier long
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TV = O.Range("A1").CurrentRegion 'définit le tableau de valeur TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV) 'boucle sur toutes les ligne I du tableau des valeurs TV (en partant de la seconde)
If CLng(TV(I, 3)) >= DD And CLng(TV(I, 3)) <= DF Then 'condition : si la date (convertie en entier long) est comprise entre la date de début et la date de fin
ReDim Preserve TL(1 To 2, 1 To K) 'redimensionne le tableau TL (2 lignes, K colonnes)
TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL, le nom en colonne 1 de TV(= Transposition)
TL(2, K) = TV(I, 2) 'récupère dans la ligne 2 de TL, le prénom en colonne 2 de TV (= Transposition)
K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
'si K est supérieure à 1, renvoie dans la cellule E1 (à adapter à ton cas) redimensionnée le tableau TL transposé
If K > 1 Then O.Range("E1").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End Sub
Merci Thautème !
Je vais adapter ton Sub() à mon fichier.
Je reviens vers toi dès que possible si tu me le permets.