Excel 2007 VBA : Pb copier/coller [Résolu/Fermé]

Signaler
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
-
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
-
Bonjour,

J'ai un problème avec le copier / coller suivant :
J'effectue un filtre sur ma ligne de titre située en ligne 1 et je souhaite copier le résultat dans une autre feuille, à la suite d'une plage de données déjà existante :

J'ai donc codé ce qui suit :

Range("A2:S" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible).Copy
' Collage de la plage precedement copié sur "feuille2"
Sheets("feuille2").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste


Mon soucis est que lors de mes essais, ma plage a copier (après filtrage) est vide (c'est normal) mais ce script me copie ma ligne de titre quand même et l'insère sur ma feuille 2... ce qui ne me va pas du tout :(

L'un de vous verrait il mon erreur svp ?
Merci d'avance :)

3 réponses

Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 558
Salut,
Ton erreur vient de là :
Range("A2:S" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible).Copy
Si Range("A65536").End(xlUp).Row = 1 Alors tu copies A2:S1, soit ta première ligne...
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
Merci Pijaku, effectivement, je n'avais pas percuté que si ma plage prévue était vide, je copiais la seule ligne "remplie".

Saurais tu comment verrouiller ça proprement stp ?
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 558
Tu peux tester d'abord si ta dernière ligne remplie c'est la 1ère alors on ne fait rien sinon on copie :
If Range("A65536").End(xlUp).Row <> 1 Then 
Range("A2:S" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible).Copy  
' Collage de la plage precedement copié sur "feuille2"  
Sheets("feuille2").Activate  
Range("A65536").End(xlUp).Offset(1, 0).Select  
ActiveSheet.Paste  
End If
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
19
Oui, c'est impecc ! Décidément je suis à la ramasse aujourd'hui. :)
Je note ce sujet comme résolu.

Merci a toi Pijaku !!!
Si tu as 2 mn de plus à m'accorder, j'ai ouvert un autre sujet sur mon problème principal les manipulations de dates en VB (ça me prend la tète assez bien la :) )