J'ai un très grand tableau sur la feuille 1.
Je voudrai filtrer les lignes contenant une certaine chaîne de caractère
(jusque là pas de problème), puis (et là ça se complique) faire un
copier-coller vers la feuille 2 des deux lignes qui précèdent et des trois
qui suivent celles contenant la chaîne de caractère que j'ai filtré.
Problème, lorsque je filtre, je n'ai plus que les lignes contenant la chaîne
de caractère, alors comment puis-je faire pour obtenir les 2 lignes
précédentes et les 3 suivantes du tableau initial ?
Je m'y perds ...
Merci à toutes et à tous pour votre aide.
Cordialement.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacquouille
Bonsoir En toute modestie, si tu prenais le n° de la ligne filtrée, puis via macro, faire copier-coller de la ligne n-2 jusque n+3 ? bonne chance
-- Jacquouille con seille : http://www.excelabo.net
"AntiSpam" a écrit dans le message news: bi2s98$fam$
Bonjour,
J'ai un très grand tableau sur la feuille 1. Je voudrai filtrer les lignes contenant une certaine chaîne de caractère (jusque là pas de problème), puis (et là ça se complique) faire un copier-coller vers la feuille 2 des deux lignes qui précèdent et des trois qui suivent celles contenant la chaîne de caractère que j'ai filtré.
Problème, lorsque je filtre, je n'ai plus que les lignes contenant la chaîne
de caractère, alors comment puis-je faire pour obtenir les 2 lignes précédentes et les 3 suivantes du tableau initial ?
Je m'y perds ...
Merci à toutes et à tous pour votre aide. Cordialement.
Bonsoir
En toute modestie, si tu prenais le n° de la ligne filtrée, puis via macro,
faire copier-coller de la ligne n-2 jusque n+3 ?
bonne chance
--
Jacquouille con seille : http://www.excelabo.net
NoSpam_j.thiernesse@skynet.be
"AntiSpam" <blabla.truc@laposte.net> a écrit dans le message news:
bi2s98$fam$1@news-reader1.wanadoo.fr...
Bonjour,
J'ai un très grand tableau sur la feuille 1.
Je voudrai filtrer les lignes contenant une certaine chaîne de caractère
(jusque là pas de problème), puis (et là ça se complique) faire un
copier-coller vers la feuille 2 des deux lignes qui précèdent et des trois
qui suivent celles contenant la chaîne de caractère que j'ai filtré.
Problème, lorsque je filtre, je n'ai plus que les lignes contenant la
chaîne
de caractère, alors comment puis-je faire pour obtenir les 2 lignes
précédentes et les 3 suivantes du tableau initial ?
Je m'y perds ...
Merci à toutes et à tous pour votre aide.
Cordialement.
Bonsoir En toute modestie, si tu prenais le n° de la ligne filtrée, puis via macro, faire copier-coller de la ligne n-2 jusque n+3 ? bonne chance
-- Jacquouille con seille : http://www.excelabo.net
"AntiSpam" a écrit dans le message news: bi2s98$fam$
Bonjour,
J'ai un très grand tableau sur la feuille 1. Je voudrai filtrer les lignes contenant une certaine chaîne de caractère (jusque là pas de problème), puis (et là ça se complique) faire un copier-coller vers la feuille 2 des deux lignes qui précèdent et des trois qui suivent celles contenant la chaîne de caractère que j'ai filtré.
Problème, lorsque je filtre, je n'ai plus que les lignes contenant la chaîne
de caractère, alors comment puis-je faire pour obtenir les 2 lignes précédentes et les 3 suivantes du tableau initial ?
Je m'y perds ...
Merci à toutes et à tous pour votre aide. Cordialement.
AntiSpam
Bonsoir,
Le problème est que cette ligne ne sera jamais la même et qu'il y a un grand nombre d'occurence sur un très grand tableau.
Merci
Bonsoir,
Le problème est que cette ligne ne sera jamais la même et qu'il y a un grand
nombre d'occurence sur un très grand tableau.
Le problème est que cette ligne ne sera jamais la même et qu'il y a un grand nombre d'occurence sur un très grand tableau.
Merci
michdenis
Bonjour Antispam,
Voici une procédure qui copie sur une autre feuille les résultats d'un filtre.
En plus de la plage filtrée, elle copie aussi les 2 premières lignes adjacentes situées juste avant la première ligne de la plage filtrée, et, copie aussi, les 3 lignes adjacentes à la dernières lignes du résultat du filtre.
Attention, dans la procédure, il est indiqué l'endroit où tu dois modifier la procédure selon ton application.
'------------------------------ Sub CopieResultatFiltre()
Dim Rg As Range, Rg1 As Range, Rg2 As Range Dim A As String, B As String, C As String Dim Sh As Worksheet, Chaine As String Dim Sh1 As Worksheet
'****Variables à définir********** Chaine = "toto10" Set Sh = Worksheets("Feuil1") 'Données Set Sh1 = Worksheets("Feuil2") 'où seront copiées les données '*****************************
With Sh '****Définir plage de tes données******* Set Rg = .Range("d10:K" & .Range("d65536").End(xlUp).Row) '******************************** With Rg 'A déterminer Le "1" , le champ de la plage sur lequel tu filtres .AutoFilter 1, Criteria1:=Chaine Set Rg1 = Sh.Range(Sh.AutoFilter.Range.Address) Set Rg2 = Rg1.Offset(1).Resize(Rg1.Rows.Count - 1, _ Rg.Columns.Count).SpecialCells(xlCellTypeVisible) If Not Rg2 Is Nothing Then With Rg2 'Le select case c'est pour tenir compte du fait 'que la première ligne du filtre peut la ligne 2,3 'et dans ce cas la méthode .offset(-2) ne donne pas 'le résultat désiré. Select Case .Item(1).Row Case Is = Rg1.Item(1).Row + 1 A = .Item(1).Resize(1, .Columns.Count).Address Case Is = Rg1.Item(1).Row + 2 A = .Item(1).Offset(-1).Address & ":" & .Item(1) _ .Resize(1, .Columns.Count).Address Case Is >= Rg1.Item(1).Row + 3 A = .Item(1).Offset(-2).Address & ":" & .Item(1) _ .Offset(-1).Resize(1, .Columns.Count).Address End Select 'L'adresse de la plage des données filtrées B = .Address 'L'adresse + 3 lignes C = Sh.Cells(.Areas(.Areas.Count).Offset(1).Row, Rg(1).Column) _ .Resize(3, 1).Resize(, .Columns.Count).Address Set rg3 = Union(Sh.Range(A), Sh.Range(B), Sh.Range(C)) End With .AutoFilter End If End With End With
'Copie vers ... With Sh1 rg3.Copy .Range("A" & .Range("A65536").End(xlUp)(2).Row) End With
Set Sh = Nothing: Set Rg = Nothing: Set Sh1 = Nothing Set Rg1 = Nothing: Set Rg2 = Nothing: Set rg3 = Nothing
End Sub '------------------------------
Salutations!
"AntiSpam" a écrit dans le message de news:bi2s98$fam$ Bonjour,
J'ai un très grand tableau sur la feuille 1. Je voudrai filtrer les lignes contenant une certaine chaîne de caractère (jusque là pas de problème), puis (et là ça se complique) faire un copier-coller vers la feuille 2 des deux lignes qui précèdent et des trois qui suivent celles contenant la chaîne de caractère que j'ai filtré.
Problème, lorsque je filtre, je n'ai plus que les lignes contenant la chaîne de caractère, alors comment puis-je faire pour obtenir les 2 lignes précédentes et les 3 suivantes du tableau initial ?
Je m'y perds ...
Merci à toutes et à tous pour votre aide. Cordialement.
Bonjour Antispam,
Voici une procédure qui copie sur une autre feuille les résultats d'un filtre.
En plus de la plage filtrée, elle copie aussi les 2 premières lignes adjacentes situées juste avant la première ligne de la
plage filtrée, et, copie aussi, les 3 lignes adjacentes à la dernières lignes du résultat du filtre.
Attention, dans la procédure, il est indiqué l'endroit où tu dois modifier la procédure selon ton application.
'------------------------------
Sub CopieResultatFiltre()
Dim Rg As Range, Rg1 As Range, Rg2 As Range
Dim A As String, B As String, C As String
Dim Sh As Worksheet, Chaine As String
Dim Sh1 As Worksheet
'****Variables à définir**********
Chaine = "toto10"
Set Sh = Worksheets("Feuil1") 'Données
Set Sh1 = Worksheets("Feuil2") 'où seront copiées les données
'*****************************
With Sh
'****Définir plage de tes données*******
Set Rg = .Range("d10:K" & .Range("d65536").End(xlUp).Row)
'********************************
With Rg
'A déterminer Le "1" , le champ de la plage sur lequel tu filtres
.AutoFilter 1, Criteria1:=Chaine
Set Rg1 = Sh.Range(Sh.AutoFilter.Range.Address)
Set Rg2 = Rg1.Offset(1).Resize(Rg1.Rows.Count - 1, _
Rg.Columns.Count).SpecialCells(xlCellTypeVisible)
If Not Rg2 Is Nothing Then
With Rg2
'Le select case c'est pour tenir compte du fait
'que la première ligne du filtre peut la ligne 2,3
'et dans ce cas la méthode .offset(-2) ne donne pas
'le résultat désiré.
Select Case .Item(1).Row
Case Is = Rg1.Item(1).Row + 1
A = .Item(1).Resize(1, .Columns.Count).Address
Case Is = Rg1.Item(1).Row + 2
A = .Item(1).Offset(-1).Address & ":" & .Item(1) _
.Resize(1, .Columns.Count).Address
Case Is >= Rg1.Item(1).Row + 3
A = .Item(1).Offset(-2).Address & ":" & .Item(1) _
.Offset(-1).Resize(1, .Columns.Count).Address
End Select
'L'adresse de la plage des données filtrées
B = .Address
'L'adresse + 3 lignes
C = Sh.Cells(.Areas(.Areas.Count).Offset(1).Row, Rg(1).Column) _
.Resize(3, 1).Resize(, .Columns.Count).Address
Set rg3 = Union(Sh.Range(A), Sh.Range(B), Sh.Range(C))
End With
.AutoFilter
End If
End With
End With
'Copie vers ...
With Sh1
rg3.Copy .Range("A" & .Range("A65536").End(xlUp)(2).Row)
End With
Set Sh = Nothing: Set Rg = Nothing: Set Sh1 = Nothing
Set Rg1 = Nothing: Set Rg2 = Nothing: Set rg3 = Nothing
End Sub
'------------------------------
Salutations!
"AntiSpam" <blabla.truc@laposte.net> a écrit dans le message de news:bi2s98$fam$1@news-reader1.wanadoo.fr...
Bonjour,
J'ai un très grand tableau sur la feuille 1.
Je voudrai filtrer les lignes contenant une certaine chaîne de caractère
(jusque là pas de problème), puis (et là ça se complique) faire un
copier-coller vers la feuille 2 des deux lignes qui précèdent et des trois
qui suivent celles contenant la chaîne de caractère que j'ai filtré.
Problème, lorsque je filtre, je n'ai plus que les lignes contenant la chaîne
de caractère, alors comment puis-je faire pour obtenir les 2 lignes
précédentes et les 3 suivantes du tableau initial ?
Je m'y perds ...
Merci à toutes et à tous pour votre aide.
Cordialement.
Voici une procédure qui copie sur une autre feuille les résultats d'un filtre.
En plus de la plage filtrée, elle copie aussi les 2 premières lignes adjacentes situées juste avant la première ligne de la plage filtrée, et, copie aussi, les 3 lignes adjacentes à la dernières lignes du résultat du filtre.
Attention, dans la procédure, il est indiqué l'endroit où tu dois modifier la procédure selon ton application.
'------------------------------ Sub CopieResultatFiltre()
Dim Rg As Range, Rg1 As Range, Rg2 As Range Dim A As String, B As String, C As String Dim Sh As Worksheet, Chaine As String Dim Sh1 As Worksheet
'****Variables à définir********** Chaine = "toto10" Set Sh = Worksheets("Feuil1") 'Données Set Sh1 = Worksheets("Feuil2") 'où seront copiées les données '*****************************
With Sh '****Définir plage de tes données******* Set Rg = .Range("d10:K" & .Range("d65536").End(xlUp).Row) '******************************** With Rg 'A déterminer Le "1" , le champ de la plage sur lequel tu filtres .AutoFilter 1, Criteria1:=Chaine Set Rg1 = Sh.Range(Sh.AutoFilter.Range.Address) Set Rg2 = Rg1.Offset(1).Resize(Rg1.Rows.Count - 1, _ Rg.Columns.Count).SpecialCells(xlCellTypeVisible) If Not Rg2 Is Nothing Then With Rg2 'Le select case c'est pour tenir compte du fait 'que la première ligne du filtre peut la ligne 2,3 'et dans ce cas la méthode .offset(-2) ne donne pas 'le résultat désiré. Select Case .Item(1).Row Case Is = Rg1.Item(1).Row + 1 A = .Item(1).Resize(1, .Columns.Count).Address Case Is = Rg1.Item(1).Row + 2 A = .Item(1).Offset(-1).Address & ":" & .Item(1) _ .Resize(1, .Columns.Count).Address Case Is >= Rg1.Item(1).Row + 3 A = .Item(1).Offset(-2).Address & ":" & .Item(1) _ .Offset(-1).Resize(1, .Columns.Count).Address End Select 'L'adresse de la plage des données filtrées B = .Address 'L'adresse + 3 lignes C = Sh.Cells(.Areas(.Areas.Count).Offset(1).Row, Rg(1).Column) _ .Resize(3, 1).Resize(, .Columns.Count).Address Set rg3 = Union(Sh.Range(A), Sh.Range(B), Sh.Range(C)) End With .AutoFilter End If End With End With
'Copie vers ... With Sh1 rg3.Copy .Range("A" & .Range("A65536").End(xlUp)(2).Row) End With
Set Sh = Nothing: Set Rg = Nothing: Set Sh1 = Nothing Set Rg1 = Nothing: Set Rg2 = Nothing: Set rg3 = Nothing
End Sub '------------------------------
Salutations!
"AntiSpam" a écrit dans le message de news:bi2s98$fam$ Bonjour,
J'ai un très grand tableau sur la feuille 1. Je voudrai filtrer les lignes contenant une certaine chaîne de caractère (jusque là pas de problème), puis (et là ça se complique) faire un copier-coller vers la feuille 2 des deux lignes qui précèdent et des trois qui suivent celles contenant la chaîne de caractère que j'ai filtré.
Problème, lorsque je filtre, je n'ai plus que les lignes contenant la chaîne de caractère, alors comment puis-je faire pour obtenir les 2 lignes précédentes et les 3 suivantes du tableau initial ?
Je m'y perds ...
Merci à toutes et à tous pour votre aide. Cordialement.