Copier / coller des valeurs avec modifications de filtres

Fermé
oliv - 8 déc. 2016 à 15:49
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 8 déc. 2016 à 21:21
Bonjour,

Je coince dans Excel pour réaliser quelque chose de certainement simple, mais mes connaissances en VBA sont un peu limitées...
C'est pourquoi je vous appelle à l'aide...

L'objectif est de copier/coller des données d'une feuille à une autre. Mais l'opération est à répéter plusieurs fois.

J'ai bien réussi à faire une fois mais pour faire la boucle... je dois m'avouer vaincu. :(

La ligne 5 de la feuille "RESULTS" contient au moins une trentaine de valeurs et je voudrais filtrer chacune des valeurs sur une colonne (dans mon code la 6ème) de la feuille "Visual" et copier le contenu de la colonne 1 sous la valeur correspondante de la feuille "RESULTS"

voici mon code:

Dim Last_line3 As Long
Sheets("RESULTS").Select
Range("C5").Select
Selection.Copy
Sheets("Visual").Select
ActiveSheet.Range("$A$3:$BF$652").AutoFilter Field:=6, Criteria1:="56"
Range("A3").Select
Last_line3 = Selection.End(xlDown).Row
Range("A3:A" & Last_line3).Select
Selection.Copy
Sheets("RESULTS").Select
Range("C6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

J'espère ne pas vous avoir perdu dans mes explications.

Merci beaucoup par avance!
A voir également:

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
8 déc. 2016 à 21:21
Essayons avec un exemple : pour chaque ligne de la feuille "Visual", A est la valeur en colonne 1 et B la valeur en colonne 6.
Il faut chercher dans quelle colonne de la ligne 5 de la feuille "RESULTS" se trouve la valeur B, et copier A en dessous de cette valeur.
C'est bien cela?
Tu n'expliques pas dans quelle ligne copier A : en ligne 6, ou bien dans la première ligne libre de la colonne de destination?
Moi je ne ferais pas cela avec un autofilter, mais ton approche devrait aussi fonctionner. J'ai rajouté des commentaires dans ton code pour te donner des suggestions.
Si tu as commencé en enregistrant une macro, je trouve que c'est une excellent idée. Cependant, tu as "triché" en tapant 56, ce qui rend la macro partiellement inutile. Je te suggère de refaire un essai.
Dim Last_line3 As Long 
' faire une boucle pour toutes les colonnes de la ligne 5 de RESULTS
Sheets("RESULTS").Select 
' dans la ligne suivante, faire évoluer C à chaque itération
Range("C5").Select 
' pourquoi faire ce copy, il n'est jamais utilisé?
Selection.Copy 
Sheets("Visual").Select 
' dans la ligne suivante, remplacer 56 par la valeur de la bonne colonne de la ligne 5 de RESULTS
ActiveSheet.Range("$A$3:$BF$652").AutoFilter Field:=6, Criteria1:="56" 
Range("A3").Select 
Last_line3 = Selection.End(xlDown).Row 
Range("A3:A" & Last_line3).Select 
Selection.Copy 
Sheets("RESULTS").Select 
' dans la ligne suivante, faire évoluer C à chaque itération
Range("C6").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
:=False, Transpose:=False
' prochaine itération de la boucle 

Si tu es un peu dépassé, c'est sans doute préférable de commencer par un exercice plus simple.
0