VBA Excel: sélection de dates glissantes d'un tableau [Résolu]

Messages postés
1
Date d'inscription
mardi 16 juillet 2019
Statut
Membre
Dernière intervention
16 juillet 2019
- - Dernière réponse : yg_be
Messages postés
8296
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 août 2019
- 12 août 2019 à 14:39
Bonjour,

Je travaille sous Excel 2013 et dispose d'un tableau avec des dates en colonne A et des noms en colonne B: https://www.cjoint.com/c/IGqjkE6reID
En D1, j'ai mis une formule qui indique la date glissante à 31 jours (15/06/2019 si on est le 16/07/2019, 10/03/2019 si on est le 11/04/2019...).
J'aimerais savoir quel code VBA pourrait me permettre de sélectionner la partie du tableau (dates et noms) de la date la plus ancienne date à celle inférieure à la date figurant en D1, idéalement en intégrant la formule située en D1 dans un code pour libérer la cellule D1; autrement dit, j'aimerais pouvoir sélectionner le tableau de la première ligne à la dernière contenant les infos du 14/06/2019 si en D1 apparaît la date "15/06/2019"; quelqu'un aurait-il une piste?? Toutes les idées sont bonnes à prendre!

Je vous en remercie par avance!
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
8296
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 août 2019
412
1
Merci
bonjour, je suggère ceci:
Option Explicit

Sub lena()
Dim dt As Date, cejour As Date, nlig As Long, fl As Worksheet
Set fl = ActiveSheet
cejour = Date
dt = DateSerial(Year(cejour), Month(cejour) - 1, Day(cejour - 1))
nlig = 1
Do While fl.Cells(nlig, 1) < dt And IsDate(fl.Cells(nlig, 1))
    nlig = nlig + 1
Loop
If nlig < 2 Then
    nlig = 2
End If
fl.Range(fl.Cells(1, 1), fl.Cells(nlig - 1, 2)).Select
End Sub

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 58271 internautes nous ont dit merci ce mois-ci

yg_be
Messages postés
8296
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 août 2019
412 > Lena_tkd -
alors je pense à deux options:
1) stocker le numéro de ligne dans une cellule
2) refaire à chaque fois la recherche de la zone contenant les anciennes dates
il me semble que la seconde option est plus propre.
Merci. La seconde option supposerait une nouvelle exécution du code ci-dessus, c'est bien ça?
yg_be
Messages postés
8296
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 août 2019
412 > Lena_tkd -
d'une partie, tout au moins.
le code sélectionne une zone, ce n'est sans doute pas la meilleure façon de faire.
sinon la première option se matérialiserait par ce bout de code à ajouter, par exemple:
range("A1").value = nlig?
yg_be
Messages postés
8296
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 août 2019
412 > lena_tkd -
exactement
Commenter la réponse de yg_be