Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraction de Données

21 réponses
Avatar
JulieH
Bonjour à toutes et tous,

Cela fait un bon bout de temps que je n'ai pas eu besoin d'aide mais
cette fois-ci je ne m'en sors pas.

J'ai un fichier avec de nombreuses dates (la même date est aussi
utilisée plusieurs fois) et je souhaite en extraire une série. J'ai donc
réalisé une page d'accueil ou je note une date Début et une date Fin de
manière à extraire toutes les dates entre les deux (Début et Fin incluses).

J'utilise le code suivant :
'Recherche et supprime les valeurs inférieures
n = Columns(4).Find(What:=Début, After:=Range("D6"),
LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:=False).Row
Rows("6:" & n - 1).Delete

Tout fonctionne de manière parfaite lorsque Début n'est pas la première
date du Fichier. Par exemple, Début est le 22/06 et il y a 16 fois cette
date. S'il y a dans le fichier une date inférieure au 22/06, j'ai bien
les 16 lignes. Si, en revanche, le 22/06 est la première date du
fichier, je ne récupère que 15 lignes.

N.B : j'ai le même problème pour la Fin.

Si quelqu'un peut m'aider, merci par avance.


Julie

1 réponse

1 2 3
Avatar
JulieH
Bonjour,

Merci également pour ton idée. Je vais tester tout cela.

Julie

Péhemme a écrit :
Pardonnez-moi de m'immiscer.
Moi j'aime bien les filtres élaborés.
Si l'idée est de copier sur la feuille Copie les informations comprises
entre la date Début incluse et la date fin incluse, si cela peut aider,
je me permets de proposer la macro suivante.
Au préalable, il faut modifier les formules de
Envoi!B14 = SI(B13="";"";TEXTE(DROITE(B13;11);"jj/mm/aaaa"))
en : =SI(B13="";"";TEXTE(DROITE(B13;10);"jj/mm/aaaa"))
Pareil pour D14 de la feuille Envoi.
J'utilise ces 2 informations pour alimenter mes critères en D1 et D2 de
la feuille Données.
Il faut également veiller à ce que la colonne D de la feuille Données
soit bien une Date et non pas un String
Le reste, merci à Denis qui m'avait bien aidé en 2004 (notamment le coup
des "Resize")...
Michel


Sub FiltrerEntreDates()
'=================================================== > 'Pour apurement de la Base de Données et mise en *
'archives des dossiers clos selon critères de dates *
'=================================================== > Dim Sh1 As Worksheet, Sh2 As Worksheet, MaPlage As Range, Dest As Range
Dim DateDébut As Long, DateFin As Long, R As Long

Set Sh1 = Worksheets("Données")
Set Sh2 = Worksheets("Copie")
Set MaPlage = Sh1.Range("a5").CurrentRegion
R = Sh2.Range("d65536").End(xlUp).Row + 1
Set Dest = Sh2.Range("a" & R)

Sh1.Range("d1") = CDate(Range("Envoi!b14"))
Sh1.Range("d2") = CDate(Range("Envoi!d14"))

DateDébut = CLng(Sh1.Range("d1"))
DateFin = CLng(Sh1.Range("d2"))

MaPlage.AutoFilter Field:=4, Criteria1:=">=" & DateDébut, Operator:= _
xlAnd, Criteria2:="<=" & DateFin

Sh1.Range("_FilterDatabase").Resize(Sh1.Range("_FilterDatabase") _
.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy Dest

'Si tu veux enlever de tes données les lignes copiées
'Sh1.Range("_FilterDatabase").Resize(Sh1.Range("_FilterDatabase") _
' .Rows.Count -
1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete

MaPlage.AutoFilter

Set Sh1 = Nothing
Set Sh2 = Nothing
Set MaPlage = Nothing
Set Dest = Nothing

End Sub




"JulieH" a écrit dans le message de
news:OarEsyI%
Bonjour à toutes et tous,

Cela fait un bon bout de temps que je n'ai pas eu besoin d'aide mais
cette fois-ci je ne m'en sors pas.

J'ai un fichier avec de nombreuses dates (la même date est aussi
utilisée plusieurs fois) et je souhaite en extraire une série. J'ai donc
réalisé une page d'accueil ou je note une date Début et une date Fin de
manière à extraire toutes les dates entre les deux (Début et Fin
incluses).

J'utilise le code suivant :
'Recherche et supprime les valeurs inférieures
n = Columns(4).Find(What:=Début, After:=Range("D6"),
LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:úlse).Row
Rows("6:" & n - 1).Delete

Tout fonctionne de manière parfaite lorsque Début n'est pas la première
date du Fichier. Par exemple, Début est le 22/06 et il y a 16 fois cette
date. S'il y a dans le fichier une date inférieure au 22/06, j'ai bien
les 16 lignes. Si, en revanche, le 22/06 est la première date du
fichier, je ne récupère que 15 lignes.

N.B : j'ai le même problème pour la Fin.

Si quelqu'un peut m'aider, merci par avance.


Julie





1 2 3