Excel -Copier valeurs filtrées plage variable dans autre colonne

Fermé
fleur 99 - 31 déc. 2015 à 00:25
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 7 janv. 2016 à 07:49
Bonjour,
Sous excel 2010, vba. Je ne trouve pas la solution à mon problème et mon projet est bloqué.
Je fais un filtre sur la valeur "pays" colonne 19 et souhaite copier le contenu de la colonne 17 en colonne 19. Colonne avec plage variable, lignes filtrées seulement à copier.
J'arrive à sélectionner les valeurs souhaitées colonne 17 mais la copie en colonne 19 n'est pas correcte (ne tient pas compte des lignes filtrées pour le collage).
Voici mon code.

  ActiveSheet.Range(Cells(donnees_titre + 1, 19), Cells(donnees_fin, 19)).AutoFilter Field:=19, Criteria1:= _
"=pays"
Cells([_filterdatabase].Offset(1).SpecialCells(xlCellTypeVisible).Row, 17).Select
ligne = ActiveCell.Row
Range(Cells(ligne, 17), Cells(donnees_fin, 17)).Select
Selection.SpecialCells(xlVisible).Copy
Range(Cells(ligne, 17), Cells(donnees_fin, 17)).Offset(0, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Comment arriver à coller les valeurs entre les deux colonnes sur les lignes respectives ?
Je vous remercie par avance pour votre aide.
Cordialement.
A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
2 janv. 2016 à 09:09
Bonjour
pays est une variable ?
si oui, pourquoi
Criteria1:= "=pays"
et non
Criteria1:= pays
0
Bonjour Michel_m,
pays n'est pas déclaré en variable.
Comment copier sur la même ligne dans une autre colonne la donnée filtrée ?
Avec mon code les données sont bien selectionnées mais elles sont copiées/collées à la suite sans tenir compte du filtrage.
0
Malgré le nombre d'heures a chercher je n'ai pas trouvé de solution pour coller correctement les données sur la même ligne filtrée.
Faut-il utiliser une autre méthode de type boucle avec une condition ou deux, de type "for" ou "for each" ou autre ? La plage de données est de presque 50000 lignes.
Je vous remercie pour votre aide.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > fleur 99
Modifié par michel_m le 4/01/2016 à 07:45
Bonjour

les filtres ne sont valables pour 1000 lignes maxi.

merci de
Mettre un extrait du classeur (env 1500 lignes)  avec quielques concernées les colonnes concernées  sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse


En expliquant clairement ce qui est désiré au besoin par des exemples
0
Bonjour,
Merci pour votre aide.
Je pense avoir trouvé une solution de copie avec une boucle.
Le code est ci-dessous :
With Sheets("Test")
i = 2
While i < donnees_fin
lig = i
Set plage = .Range(Cells(lig, 1), Cells(lig, 20))
Select Case .Range("S" & i).Value
Case Is = "pays"
Cells(lig, 17).Select
ValeurPays = ActiveCell.Value
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = ValeurPays
End Select
i = i + 1
Wend
End With

Je suis toujours preneuse s'il existe une solution pour copier des valeurs filtrées, plage variable, dans autre colonne.
Ceci me permettrait d'appliquer des filtres sur diverses colonnes ne sachant pas le faire avec une boucle.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 7/01/2016 à 07:59
Bonjour,

Sur 50000 lignes, il y a beaucoup + rapide que de travailler cellule par cellule avec des select! si ca t'interesse , tu fais signe

et aussi une 2° en connaissant l'entête des colonnes S,T,U...

et peut-^tre (pas sûr de moi pour >1000 lignes!) avec un filtre élaboré. voir
[http://boisgontierjacques.free.fr/

Tu dis
0