Perte de collage

laurano

XLDnaute Junior
bonjour,

mon petit problème du jour lors de la construction de ma macro. Un truc tout bête, mais je vois pas comment m'en sortir : J'ai une liste, je fais un filtre et je ne filtre que les valeurs qui sont à 0. Alors je copie cette liste (qui ne contient que les valeurs 0). Je sélectionne toutes les valeurs à nouveau dans la liste (sans inactiver le filtre) puis je colle ce que j'ai copié à côté. Ainsi j'ai collé à côté de ma première liste une liste qui n'a que les valeurs 0.

Je veux faire la même chose via VBA et j'ai donc écrit les 4 lignes suivantes :

Range("A4").CurrentRegion.AutoFilter field:=2, Criteria1:=0
Range("A4").CurrentRegion.Copy
Range("A4").CurrentRegion.AutoFilter field:=2
Range("D4").PasteSpecial Paste:=xlPasteValues

Cette macro fait exactement la même chose, hormis que quand elle resélectionne tous les éléments de la liste (ligne 3), elle perd le collage et donc la dernière étape plante. quelqu'un saurait me dire pourquoi ?

Merci
 

flyonets44

XLDnaute Occasionnel
Re : Perte de collage

Bonjour
tu peux essayer ceci
Range("A4").CurrentRegion.AutoFilter field:=2, Criteria1:=0
With Range("_FilterDataBase")
Set Rng = .Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible)
rng.Copy range ("E"4)
'suppression du filtre
Selection.AutoFilter
Cordialement
Flyonets
 

laurano

XLDnaute Junior
Re : Perte de collage

super, ça marche !

Ceci dit, une fois de plus, on est obligé de contourner un problème qui ne devrait pas exister puisqu'en fait tu colles les données avant le changement du filtre. Mais bon, la fin justifie les moyens.. Ceci dit, tu peux m'expliquer par quel miracle ça s'accomplit ? Parce que je comprend pas bien ta ligne de code et je ne comprend pas pourquoi elle fait ce qu'elle fait. J'aimerais bien comprendre histoire de pouvoir reproduire la prochaine fois où le cas se présentera.

Merci beaucoup en tout cas
 

Pierrot93

XLDnaute Barbatruc
Re : Perte de collage

Bonjour,

petite info au passage, l'utilisation de "SpecialCells(xlCellTypeVisible)" n'est pas nécessaire lorsque l'on utilise la plage "_FilterDataBase", c'est la plage filtrée qui sera prise en compte... d'autre part, "SpecialCells(xlCellTypeVisible)", peut renvoyer une erreur si aucune cellule ne correspond aux critères du filtre...

bon après midi
@+
 

Statistiques des forums

Discussions
312 527
Messages
2 089 355
Membres
104 136
dernier inscrit
redzzo