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

A voir également:Vba excel: sélection de dates glissantes d'un tableauVba excel format date ✓ - Forum - VB / VBA Vba excel format date francais ✓ - Forum - VB / VBA Vba excel selection plage ✓ - Forum - VB / VBA Vba excel select case - Conseils pratiques - Visual Basic Excel - Selection auto d'une valeur (tableau) ✓ - Forum - Excel

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!

Forum

A voir également:Vba excel: sélection de dates glissantes d'un tableauVba excel format date ✓ - Forum - VB / VBA Vba excel format date francais ✓ - Forum - VB / VBA Vba excel selection plage ✓ - Forum - VB / VBA Vba excel select case - Conseils pratiques - Visual Basic Excel - Selection auto d'une valeur (tableau) ✓ - Forum - Excel

Web: www.shapebootstrap.net

1 réponse

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 56681 internautes nous ont dit merci ce mois-ci

Reply
réponses:
  • auteur

  • auteur

    Le code fonctionne parfaitement, merci beaucoup!!!

  • auteur

    parfait, peux-tu alors marquer le sujet comme résolu, via la roue dentée à droite du titre?

  • auteur

    Je ne vois pas de roue dentée alors dans le mail reçu j'ai cliqué sur "votre question edt résolue" mais ça n'a rien fait de plus que je me rediriger vers le forum

  • auteur

    ok, je marque résolu, merci d'avoir essayé.

  • auteur

    Petite question complémentaire: comment récupérer le numéro de la dernière ligne de la sélection?? Merci

  • auteur

    "récupérer", pour en faire quoi?
    si tu regardes la ligne 15 du code, le numéro de la dernière ligne de la sélection est

    nlig - 1
    .

  • auteur

    J'ai un autre code qui verrouille cette sélection et j'aimerais pouvoir stocker le numéro de cette dernière ligne pour empêcher la suppression d'une ligne si elle se trouver dans cette sélection

  • auteur

    l'autre code est-il exécuté indépendamment, à un autre moment?

  • auteur

    Oui, il est réutilisé par d'autres macros

  • auteur

    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.

  • auteur

    Merci. La seconde option supposerait une nouvelle exécution du code ci-dessus, c'est bien ça?

  • auteur

    d'une partie, tout au moins.
    le code sélectionne une zone, ce n'est sans doute pas la meilleure façon de faire.

  • auteur

    sinon la première option se matérialiserait par ce bout de code à ajouter, par exemple:
    range("A1").value = nlig?

  • auteur

    exactement

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed