Sélectionner les lignes entre 2 dates

Bonjour,

je suis très novice dans l'utilisation des macros. Jusqu'à aujourd’hui, j'arrivais à me débrouiller en passant par des cellules intermédiaires ou à faire des manips manuellement mais j'aimerais franchir le pas et passer par les macros.

Voilà mon soucis :

Dans mon fichier, je souhaite sélectionner les lignes comprises entre 2 dates sachant que les dates se trouvent dans des cases non fixes (la place dépend du nombre de ligne extraite d'un logiciel)

En revanche, la date de début est systématiquement à droite de la case dans laquelle se trouve le texte "Période couverte" et que la date de fin, quant à elle se trouve dans la 2ème case à droite de la case "Période couverte".

J'ai mis un fichier en pièce jointe.

Pour être plus claire, dans le fichier joint et pour l'exemple, "Période couverte" est en B84, la date de début est en C84 et la date de fin en D84. Les lignes à sélectionner sont alors les lignes 18 à 75je voudrais que la macro sélectionne les lignes ce fichier

Merci d'avance pour votre aide bien précieuse :-)

35essais.csv (8.59 Ko)

Bonjour,

En VBA on ne sélectionne jamais : ça ne sert à rien.

On définit une plage de travail et on fait quelque chose avec...

De plus vous nous donnez un fichier csv qui ne comporte pas de macro : Votre macro devra nécessairement ouvrir ce fichier, en faire quelque chose.

Non pas sélectionner mais instancier une plage de valeur pour la traiter...

Au terme de ces opérations la macro dira

Set plage = "fichier". Range(A18:AA75)

ou mieux :

Arr = Range(A18:AA75).Value

Mais cette histoire de sélection ne me dit rien qui vaille : La première chose qu'on doit oublier en VBA c'est de sélectionner...

L'exploitation de ces données par une macro est certes une bonne idée, mais la (mauvaise) manière dont vous envisagez le scénario rend l'idée non efficiente.

Partez de votre classeur de travail (qui contiendra la macro) : Dites nous ce que vous voulez faire de ces fichues données, et laissez le programmeur vous pondre un truc efficace. Après on vous expliquera.

A+

Bonjour,

Voici un essai en supposant que les dates sont en colonne 1 et qu'il y aura toujours une (et une seule) cellule contenant "Période couverte" :

Sub test()
with activesheet
    with .cells.find("Période couverte")
        ddebut = .offset(, 1).value
        dfin = .offset(, 2).value
    end with
    t = .usedrange.value
    for i = lbound(t) to ubound(t)
        if t(i, 1) >= ddebut and t(i, 1) <= dfin then '<<< dates supposées en colonne 1
            n = n + 1
            for k = lbound(t, 2) to ubound(t, 2)
                t(n, k) = t(i, k)
            next k
        end if
    next i
end with
if n = 0 then exit sub
with sheets.add(after:=sheets(sheets.count))
    .name = "Extrac " & format(now, "YYMMDD HHMMSS")
    .cells(1).resize(n, ubound(t, 2)) = t
end with
end sub

Les données sont collées sur une nouvelle feuille...

Cdlt,

Merci à vous 2 pour vos réponses.

galopin01 : je vais suivre tes conseils sur la sélection. Je n'ai mis qu'une partie des explications. Ces données vont alors dans un autre fichier qui réalise de nombreux calculs. Je fais cela car je ne serais pas le seul à utiliser le fichier. Si j'avais été le seul, jamais je n'aurais franchi le pas de passer par les macros

3GB : Ta macro fonctionne à merveille. Merci beaucoup. Il ne me reste qu'à regarder de plus près les fonctions utilisées pour comprendre. Et pour cela, je n'ai plus besoin de vous.

Encore Merci pour votre aide

Rechercher des sujets similaires à "selectionner lignes entre dates"