Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

copier coller apres un filtre

  • Initiateur de la discussion ChristineG
  • Date de début
C

ChristineG

Guest
Bonjour à Tous

J'aimerais automatiser la manip suivante
-filtrer la colonne C
-selectionner la ligne 'A1 : T1'
-copier
-coller le tout ds la 1ere ligne vide

J'ai un début de code mais pour le reste ?????????

ActiveCell.Offset(0,0).Range('A1:T1').Select
Selection.Copy

?????????

Merci à tous de m'aider

PS: je débute en VBA
 

Dan

XLDnaute Barbatruc
bonjour,

Suis ce lien dans lequel tu trouveras un fichier exemple : Lien supprimé et quelques explications.

C'est un premier jet mais vois si cela peut te convenir.

Si pb n'hésite pas



Message édité par: Dan, à: 03/03/2005 12:45
 
C

ChristineG

Guest
Bonjour à tous

Merci Dan pour ta reponse mais helas ce n'est pas tout à fait ce que je souhaite

Petite précision : au moment ou je voudrais declencher cette macro ma colonne est deja filtrée

Une autre solution serait la bien venue
Merci


PS: Excuse moi de repondre si tardivement mais je n'ai pas de zip donc le tps d'en trouver un ....... d'essayer la solution proposée ..........
 

Papy Novice

Nous a quitté
Repose en paix
Bonjour Christine, Dan,
Sub PremièreCelluleVideEnPartantDuBas()
With Worksheets(Nom de la feuille)
.Activate
.Range('A65536').End(xlUp).(2).Select
End With
End Sub
Est-ce que cette macro (provenant de ce site) te convient ?
Cordialement .
Jean
 
C

christineG

Guest
Bonjour et merci Jean de te pencher sur mon problème
Qd je reecris ta macro et que j'essaie de la lancer, excel me renvoie un message d'erreur sur la phrase :.Range('A65536').End(xlUp).(2).Select
apparament la parenthese du 2 lui pose un problème
(au fait à quoi correspond ce (2)???????)
cordialement
Christine
 
C

christineG

Guest
Merci Roger/effectivement en enlevant le point devant (2) ça va mieux
Mais pour le reste .........
Voila ou j'en suis :

Sub PremièreCelluleVideEnPartantDuBas()
ActiveCell.Offset(0, 0).Range('A1:T1').Select
selection.Copy
With Worksheets('2005')
.Activate
.Range('A65536').End(xlUp)(2).Select
End With
End Sub

Si je ne filtre pas la colonne, le rang a1 t1 (par ex ligne 178)est bien copié, la 1ere cellule vide (ligne 190)est bien selectionnée
Mais le copier coller ne s'effectue pas

Si je filtre la colonne, le rang a1 t1 est bien copié mais mais la 1ere cellule selectionneé se trouve en ligne 179 (et non 190) et le copier coller ne s'effectue pas

Qui aurait une idée???????
cordialement
 
D

Dan

Guest
Bonsoir,

1.Logique que tu ne peux pas coller, l'instruction n'est pas présente.

Sub PremièreCelluleVideEnPartantDuBas()
ActiveCell.Offset(0, 0).Range('A1:T1').Select
selection.Copy
With Worksheets('2005')
.Activate
.Range('A65536').End(xlUp)(2).Select
.Paste
End With

2. Je ne comprends pas bien ce que tu veux dire avec la ligne 190. Ici, ta macro ne copie en effet que la plage A1 à T1.
Peux-tu apporter un complément d'explication.

3.Après le filtre, quelle est la plage concernée par la copie vers la feuille 2005 ?

Dans l'attente de te lire

 
C

christineG

Guest
Bonjour et merci
effectivement avec la commande paste ça va bcp mieux
Mais le pb reste entier pour 'trouver la 1 ere ligne vide ap le filtre
Voici un extrait du tableau sur lequel j'aimerai sfaire fonctionner cette macro

a b c e
1 code lot date fab qte fab...........
2 Pn40 01 07/01/05 100
3 P30 01 13/01/05 1000
4 P30 02 13/01/05 50
....
50 Pn40 02 07/02/05 1000
51

Je filtre sur la colonne (a) la ref P30 ligne 3, je lance la macro de telle façon que ma ligne 3 se recopie sur la 1 ere ligne vide de la meme feuille cad la 51
Cordialement
Christine
 

Dan

XLDnaute Barbatruc
Bonsoir Christine,

D'abord mille excuses mais je t'avais complètement oublié dans mon suivi...

Par rapport à ton message, je voudrais savoir si tu filtres bien sur la colonne Code.
Si c'est le cas dans ton exemple tu devrais avoir :
- en ligne 1 les entêtes de ton tableau
- en ligne 2 la ligne que tu veux copier en dessous de ta ligne 51.

Merci de ton info


 
D

Dan

Guest
Bonsoir Christine,

Voilà tout est dans le fichier ci-joint.

J'ai dû changer quelque peu la macro mais tout semble fonctionner.

Ta macro (que j'ai appelée 'CopieCode'), fonctionnera si la feuille de donnée est nommée 2005. En cas de changement il faut adapter le code de la macro.

Les explications de déroulement sont en regard du code de la macro.

Espérant que cela te conviendra.

[file name=Copie-ligne_filtree-3254-V01_20050314213631.zip size=11838]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Copie-ligne_filtree-3254-V01_20050314213631.zip[/file]

Message édité par: Dan, à: 14/03/2005 21:37
 

Pièces jointes

  • Copie-ligne_filtree-3254-V01_20050314213631.zip
    11.6 KB · Affichages: 103
C

christineG

Guest
Bonjour Dan et un grand merci
et...........si je peux me permettre d'abuser une nouvelle fois :

Voila j'ai 'tenté' d'adapter ta macro pour qu'elle fonctionne qqsoit la ligne selectionnée apres le filtre mais du coup en fin de parcours le filtre ne reviens pas à sa forme d'origine:'sélectionne A1 pour réappliquer le mode filtre automatique ne se fait pas

Sub CopieCode1()
Application.ScreenUpdating = False
Worksheets('2005').Activate
ActiveCell.Offset(0, 0).Range('A1:T1').Select
selection.Copy
With Worksheets('2005')
.AutoFilterMode = False
.Range('A65536').End(xlUp)(2).Select
.Paste
.Range('A1').AutoFilter 'sélectionne A1 pour réappliquer le mode filtre automatique
End With
Application.ScreenUpdating = True
End Sub

A+
Christine
 
D

Dan

Guest
Bonsoir Christine,

hmy: En fonction ta réponse à ma question


la macro que j'ai placée dans le fichier fait récupére la première ligne après que tu aies filtré tes données dans la colonne code et la copie après la dernière ligne de ta base de données.

D'après ton dernier message je comprends autre chose ...
Ce que tu veux c'est filtrer, puis récupérer n'importe qu'elle ligne filtrée et la placer après la dernière ligne de ta base de données ?

si oui :
supprime : ActiveCell.Offset(0, 0).Range('A1:T1').Select
remplace par : ActiveCell.EntireRow.Select

si non, réexplique moi tout ....

@+ Dan

Message édité par: Dan, à: 17/03/2005 22:33

Message édité par: Dan, à: 17/03/2005 22:35
 

Discussions similaires

Réponses
7
Affichages
650
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…