OVH Cloud OVH Cloud

Copy donnees filtrer sans les titres

4 réponses
Avatar
Jed
Bonjour,
Suite =E0 des questions que j'ai pos=E9e ici m=EAme, plusieurs=20
personnes (dont je remercie) m'ont donn=E9 qq lignes de=20
codes que j'essaie d'adapter. Mais je bute sur un pti truc.

J'ai un onclet 'Recup" qui contient mes crit=E8res de filtre=20
et un onglet "liste" dans lequelle je dois copier les=20
lignes filtr=E9es.
Probl=E8me je n'arrive qu'a copier une seule ligne parceque=20
systematiquement je reecris le titre et les lignes a=20
partir de "A1". J'ai essaiyer de calculer la derni=E8re=20
ligne et copier apr=E8s mais l=E0 je copie plusieurs fois les=20
titres. =20
Ci dessous le code que j'utilise:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Rows("1:1").Select 'feuilles Donn=E9es active
AutoFilterMode =3D False
Selection.AutoFilter
For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=3D1, Criteria1:=3Dcell
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=3DSheets
("Liste").Range("A1") '--> C'est la que ca merdoie !!!
Application.CutCopyMode =3D False
Next
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Comment faire evoluer le numero de ligne pour pouvoir=20
copier les unes apr=E8s les autres dans l'onglet "Liste".

Ma r=E9connaissance =E9ternelle et toute ma fortune ira =E0=20
celui qui me d=E9pannera... :-))

PS: Fortune estim=E9e dans "Forbes" =E0 ce jour : 200 F CFA =20
en pi=E8ces de 10 centimes

4 réponses

Avatar
Ellimac
Bonjour,

Devrait fonctionner :

Range("A1").CurrentRegion.Offset(1).Copy
Sheets("Liste").Paste Destination:=Sheets("Liste").Range
("A1").End(Xlup).Offset(1)


Camille

-----Message d'origine-----
Bonjour,
Suite à des questions que j'ai posée ici même, plusieurs
personnes (dont je remercie) m'ont donné qq lignes de
codes que j'essaie d'adapter. Mais je bute sur un pti
truc.


J'ai un onclet 'Recup" qui contient mes critères de
filtre

et un onglet "liste" dans lequelle je dois copier les
lignes filtrées.
Problème je n'arrive qu'a copier une seule ligne parceque
systematiquement je reecris le titre et les lignes a
partir de "A1". J'ai essaiyer de calculer la dernière
ligne et copier après mais là je copie plusieurs fois les
titres.
Ci dessous le code que j'utilise:
=================
Rows("1:1").Select 'feuilles Données active
AutoFilterMode = False
Selection.AutoFilter
For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=1, Criteria1:Îll
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range("A1") '--> C'est la que ca merdoie !!!
Application.CutCopyMode = False
Next
========================
Comment faire evoluer le numero de ligne pour pouvoir
copier les unes après les autres dans l'onglet "Liste".

Ma réconnaissance éternelle et toute ma fortune ira à
celui qui me dépannera... :-))

PS: Fortune estimée dans "Forbes" à ce jour : 200 F CFA
en pièces de 10 centimes

.



Avatar
Jed
Bonjour Camille
merci pour ta réponse,
Je viens de le tester mais ça fonctionne à moitié :-(
Maintenant j'ai bien une seule ligne de titre mais les
lignes se copient les unes sur les autres.
Quand je récupère le premier filtrage, les lignes se
recopient bien, par contre le filtrage avec le critère
suivant vient effacer les premières lignes copiées.

J'ai l'impression que la copie se fait toujours à partir
de A2 sur l'onglet "Recup".
Je n'arrive pas a positionner la copie sur la dernière
ligne du tableau.

le code après modif :

For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=3, Criteria1:Îll
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range("A1").End(xlUp).Offset(1)
Application.CutCopyMode = False
Next

Merci de ton aide.

-----Message d'origine-----
Bonjour,

Devrait fonctionner :

Range("A1").CurrentRegion.Offset(1).Copy
Sheets("Liste").Paste Destination:=Sheets("Liste").Range
("A1").End(Xlup).Offset(1)


Camille

-----Message d'origine-----
Bonjour,
Suite à des questions que j'ai posée ici même, plusieurs
personnes (dont je remercie) m'ont donné qq lignes de
codes que j'essaie d'adapter. Mais je bute sur un pti
truc.


J'ai un onclet 'Recup" qui contient mes critères de
filtre

et un onglet "liste" dans lequelle je dois copier les
lignes filtrées.
Problème je n'arrive qu'a copier une seule ligne
parceque


systematiquement je reecris le titre et les lignes a
partir de "A1". J'ai essaiyer de calculer la dernière
ligne et copier après mais là je copie plusieurs fois
les


titres.
Ci dessous le code que j'utilise:
=================
Rows("1:1").Select 'feuilles Données active
AutoFilterMode = False
Selection.AutoFilter
For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=1, Criteria1:Îll
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range("A1") '--> C'est la que ca merdoie !!!
Application.CutCopyMode = False
Next
========================
Comment faire evoluer le numero de ligne pour pouvoir
copier les unes après les autres dans l'onglet "Liste".

Ma réconnaissance éternelle et toute ma fortune ira à
celui qui me dépannera... :-))

PS: Fortune estimée dans "Forbes" à ce jour : 200 F CFA
en pièces de 10 centimes

.

.





Avatar
L. Poussier
Il n'y a qu'une erreur dans le code proposé:

Destination:=Sheets("Liste").Range("A1").End(Xlup).Offset(1)

Au lieu de A1, on devrait trouver "A65535" soit la dernière cellule de la
colonne A.
Comme le nombre de lignes dépend de la version Excel, il vaut mieux utiliser
par exemple

Destination := ActiveSheet.Cells(ActiveSheet.Rows.Count,
1).End(xlUp).Offset(1, 0)

A part çà, pour éviter d'utiliser "CurrentRegion" qui peut parfois déborder
si on a la mauvaise idée d'ajouter un commentaire à droite du tableau, on
peut désigner la zone filtrée via le mot clé [_filterdatabase]
et la fonction SpecialCells(xlVisible) pour ne retenir que les lignes visibles

par exemple

Set ZoneFiltrée= _
[_filterdatabase].SpecialCells(xlVisible)

Pour ne garder que les lignes sous le titre, on se décale d'une ligne, en
réduisant aussi la zone d'une ligne

Set
LignesAffichées=Zonefiltrée.resize(rowsize:=ZoneFiltrée.rows.count-1).offset(1,0)

un simple

LignesAffichées.select
permet de contrôler visuellement que la zone sélectionnée est la bonne.


Lionel.


"Jed" wrote:

Bonjour Camille
merci pour ta réponse,
Je viens de le tester mais ça fonctionne à moitié :-(
Maintenant j'ai bien une seule ligne de titre mais les
lignes se copient les unes sur les autres.
Quand je récupère le premier filtrage, les lignes se
recopient bien, par contre le filtrage avec le critère
suivant vient effacer les premières lignes copiées.

J'ai l'impression que la copie se fait toujours à partir
de A2 sur l'onglet "Recup".
Je n'arrive pas a positionner la copie sur la dernière
ligne du tableau.

le code après modif :

For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=3, Criteria1:Îll
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range("A1").End(xlUp).Offset(1)
Application.CutCopyMode = False
Next

Merci de ton aide.

-----Message d'origine-----
Bonjour,

Devrait fonctionner :

Range("A1").CurrentRegion.Offset(1).Copy
Sheets("Liste").Paste Destination:=Sheets("Liste").Range
("A1").End(Xlup).Offset(1)


Camille

-----Message d'origine-----
Bonjour,
Suite à des questions que j'ai posée ici même, plusieurs
personnes (dont je remercie) m'ont donné qq lignes de
codes que j'essaie d'adapter. Mais je bute sur un pti
truc.


J'ai un onclet 'Recup" qui contient mes critères de
filtre

et un onglet "liste" dans lequelle je dois copier les
lignes filtrées.
Problème je n'arrive qu'a copier une seule ligne
parceque


systematiquement je reecris le titre et les lignes a
partir de "A1". J'ai essaiyer de calculer la dernière
ligne et copier après mais là je copie plusieurs fois
les


titres.
Ci dessous le code que j'utilise:
================ > >>Rows("1:1").Select 'feuilles Données active
AutoFilterMode = False
Selection.AutoFilter
For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=1, Criteria1:Îll
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range("A1") '--> C'est la que ca merdoie !!!
Application.CutCopyMode = False
Next
======================= > >>Comment faire evoluer le numero de ligne pour pouvoir
copier les unes après les autres dans l'onglet "Liste".

Ma réconnaissance éternelle et toute ma fortune ira à
celui qui me dépannera... :-))

PS: Fortune estimée dans "Forbes" à ce jour : 200 F CFA
en pièces de 10 centimes

.

.








Avatar
Jed
Geniallllllllllllllllll

ça marche...
OUffff, je galère depuis des heures et excel ne m'aidait
pas beaucoup.

Merci merci merci... Monsier L.Poussier :-)
Cdlt
Jed
-----Message d'origine-----
Il n'y a qu'une erreur dans le code proposé:

Destination:=Sheets("Liste").Range("A1").End(Xlup).Offset
(1)


Au lieu de A1, on devrait trouver "A65535" soit la
dernière cellule de la

colonne A.
Comme le nombre de lignes dépend de la version Excel, il
vaut mieux utiliser

par exemple

Destination := ActiveSheet.Cells(ActiveSheet.Rows.Count,
1).End(xlUp).Offset(1, 0)

A part çà , pour éviter d'utiliser "CurrentRegion" qui
peut parfois déborder

si on a la mauvaise idée d'ajouter un commentaire Ã
droite du tableau, on

peut désigner la zone filtrée via le mot clé
[_filterdatabase]

et la fonction SpecialCells(xlVisible) pour ne retenir
que les lignes visibles


par exemple

Set ZoneFiltrée= _
[_filterdatabase].SpecialCells(xlVisible)

Pour ne garder que les lignes sous le titre, on se
décale d'une ligne, en

réduisant aussi la zone d'une ligne

Set
LignesAffichées=Zonefiltrée.resize
(rowsize:=ZoneFiltrée.rows.count-1).offset(1,0)


un simple

LignesAffichées.select
permet de contrôler visuellement que la zone
sélectionnée est la bonne.



Lionel.


"Jed" wrote:

Bonjour Camille
merci pour ta réponse,
Je viens de le tester mais ça fonctionne à moitié :-(
Maintenant j'ai bien une seule ligne de titre mais les
lignes se copient les unes sur les autres.
Quand je récupère le premier filtrage, les lignes se
recopient bien, par contre le filtrage avec le critère
suivant vient effacer les premières lignes copiées.

J'ai l'impression que la copie se fait toujours Ã
partir


de A2 sur l'onglet "Recup".
Je n'arrive pas a positionner la copie sur la dernière
ligne du tableau.

le code après modif :

For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=3, Criteria1:Îll
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range("A1").End(xlUp).Offset(1)
Application.CutCopyMode = False
Next

Merci de ton aide.

-----Message d'origine-----
Bonjour,

Devrait fonctionner :

Range("A1").CurrentRegion.Offset(1).Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range



("A1").End(Xlup).Offset(1)


Camille

-----Message d'origine-----
Bonjour,
Suite à des questions que j'ai posée ici même,
plusieurs




personnes (dont je remercie) m'ont donné qq lignes
de




codes que j'essaie d'adapter. Mais je bute sur un pti
truc.


J'ai un onclet 'Recup" qui contient mes critères de
filtre

et un onglet "liste" dans lequelle je dois copier les
lignes filtrées.
Problème je n'arrive qu'a copier une seule ligne
parceque


systematiquement je reecris le titre et les lignes a
partir de "A1". J'ai essaiyer de calculer la
dernière




ligne et copier après mais là je copie plusieurs
fois




les
titres.
Ci dessous le code que j'utilise:
=================
Rows("1:1").Select 'feuilles Données active
AutoFilterMode = False
Selection.AutoFilter
For Each cell In Sheets("Recup").UsedRange
Selection.AutoFilter Field:=1, Criteria1:Îll
Range("A1").CurrentRegion.Copy
Sheets("Liste").Paste Destination:=Sheets
("Liste").Range("A1") '--> C'est la que ca merdoie !!!
Application.CutCopyMode = False
Next
========================
Comment faire evoluer le numero de ligne pour pouvoir
copier les unes après les autres dans
l'onglet "Liste".





Ma réconnaissance éternelle et toute ma fortune ira
Ã




celui qui me dépannera... :-))

PS: Fortune estimée dans "Forbes" à ce jour : 200 F
CFA




en pièces de 10 centimes

.

.




.