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

recherche et copie d'une plage de donéee

3 réponses
Avatar
Michel
Bonjour à tous,

Sur une feuille, j'ai récupéré une base de donnée d'environ 40000 lignes qui
sont triées par ordre croissant.

Je souhaiterais sur une autre feuille recopier à l'aide d'une macro les
lignes correspondant à un critère. Les lignes sont toujours consécutives
(critère de tri sur colonne 1). J'ai essayé avec une boucle mais je suis en
dépassement de capacité.

Comment puis-je faire ?

D'avance un grand merci

Michel

3 réponses

Avatar
Daniel
Bonjour.
La macro suivante de vrait le faire :

Sub test()
Dim Haut As Long, Bas As Long, Var As Range, Critere As String
Critere = InputBox("Entrez le critère")
If [A1] = Critere Then
Haut = 1
Else
Set Var = Range("A:A").Find(Critere, lookat:=xlWhole)
Haut = Var.Row
End If
Set Var = Range("A:A").Find(Critere, lookat:=xlWhole,
searchdirection:=xlPrevious)
Bas = Var.Row
Range(Haut & ":" & Bas).Copy Sheets("Feuil2").Range("A1")
End Sub

Cordialement.
Daniel

"Michel" a écrit dans le message de news:
et7hBvw%
Bonjour à tous,

Sur une feuille, j'ai récupéré une base de donnée d'environ 40000 lignes
qui sont triées par ordre croissant.

Je souhaiterais sur une autre feuille recopier à l'aide d'une macro les
lignes correspondant à un critère. Les lignes sont toujours consécutives
(critère de tri sur colonne 1). J'ai essayé avec une boucle mais je suis
en dépassement de capacité.

Comment puis-je faire ?

D'avance un grand merci

Michel


Avatar
Michel
Merci beaucoup pour la réponse, c'est ce type de macro que je cherche depuis
hier !


"Daniel" a écrit dans le message de news:
%23ExOIHx%
Bonjour.
La macro suivante de vrait le faire :

Sub test()
Dim Haut As Long, Bas As Long, Var As Range, Critere As String
Critere = InputBox("Entrez le critère")
If [A1] = Critere Then
Haut = 1
Else
Set Var = Range("A:A").Find(Critere, lookat:=xlWhole)
Haut = Var.Row
End If
Set Var = Range("A:A").Find(Critere, lookat:=xlWhole,
searchdirection:=xlPrevious)
Bas = Var.Row
Range(Haut & ":" & Bas).Copy Sheets("Feuil2").Range("A1")
End Sub

Cordialement.
Daniel

"Michel" a écrit dans le message de news:
et7hBvw%
Bonjour à tous,

Sur une feuille, j'ai récupéré une base de donnée d'environ 40000 lignes
qui sont triées par ordre croissant.

Je souhaiterais sur une autre feuille recopier à l'aide d'une macro les
lignes correspondant à un critère. Les lignes sont toujours consécutives
(critère de tri sur colonne 1). J'ai essayé avec une boucle mais je suis
en dépassement de capacité.

Comment puis-je faire ?

D'avance un grand merci

Michel






Avatar
Daniel
Ou, un peu plus court :

Sub test1()
Dim Haut As Long, Bas As Long, Critere As String
Critere = InputBox("Entrez le critère")
If [A1] = Critere Then
Haut = 1
Else
Haut = Range("A:A").Find(Critere, lookat:=xlWhole).Row
End If
Bas = Range("A:A").Find(Critere, lookat:=xlWhole,
searchdirection:=xlPrevious).Row
Range(Haut & ":" & Bas).Copy Sheets("Feuil3").Range("A1")
End Sub

Daniel
"Daniel" a écrit dans le message de news:
%23ExOIHx%
Bonjour.
La macro suivante de vrait le faire :

Sub test()
Dim Haut As Long, Bas As Long, Var As Range, Critere As String
Critere = InputBox("Entrez le critère")
If [A1] = Critere Then
Haut = 1
Else
Set Var = Range("A:A").Find(Critere, lookat:=xlWhole)
Haut = Var.Row
End If
Set Var = Range("A:A").Find(Critere, lookat:=xlWhole,
searchdirection:=xlPrevious)
Bas = Var.Row
Range(Haut & ":" & Bas).Copy Sheets("Feuil2").Range("A1")
End Sub

Cordialement.
Daniel

"Michel" a écrit dans le message de news:
et7hBvw%
Bonjour à tous,

Sur une feuille, j'ai récupéré une base de donnée d'environ 40000 lignes
qui sont triées par ordre croissant.

Je souhaiterais sur une autre feuille recopier à l'aide d'une macro les
lignes correspondant à un critère. Les lignes sont toujours consécutives
(critère de tri sur colonne 1). J'ai essayé avec une boucle mais je suis
en dépassement de capacité.

Comment puis-je faire ?

D'avance un grand merci

Michel