La méthode PasteSpecial de la classe Range a échoué (1004)

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 23 août 2014 à 23:41
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 30 août 2014 à 17:32
Bonjour à tou(te)s

En fait, ce n'est pas (plus) une question mais une réponse que j'ai eu du mal à trouver, même sur le net : j'ai passé une demie journée pour trouver le problème - je m'en viens la noter ici pour que cela puisse en aider d'autres.

Contrexte :
Sous Excel 2010, je tentais de faire un "collage spécial" des valeurs (uniquement) de 300.000 cellules.
Quand je le faisais à la main, pas de souci.
Quand je l'incluais dans une macro, à chaque fois cette erreur.

Après avoir écumé tous les forums et les pages de Microsoft, j'en suis arrivé à la conclusion que les filtres automatiques provoquaient ce problème :
Le collage que je voulais faire amenait ces valeurs dans une feuille qui possèdait déjà les titres des colonnes; titres équipés de filtres automatiques.
Si on tente de faire un PasteSpecial dans ces conditions, ça plante.

La solution a donc consisté :
- A supprimer temporairement le filtrage automatique
- A demander le figeage des calculs de la feuille
(oSheet.Application.Calculation = xlManual)

A noter :
Pour supprimer temporairement les filtres automatiques et les remettre en place ensuite :

Dim oFilterRnge As String
Dim oRange1 As Range

' Pour désactiver le filtrage
If Not oSheet.AutoFilter Is Nothing Then
' Mémorise adresse de filtrage
oFilterRnge = oSheet.AutoFilter.Range.Address
' Supprime
oSheet.Range(oFilterRnge).AutoFilter
Else
oFilterRnge = ""
End If

' Pour remettre le filtre tel qu'il était au début
If Len(oFilterRnge) > 0 Then
' Remet en serice le filtrage
Set oRange1 = oSheet.Range(oFilterRnge)
oRange1.AutoFilter
End If
oSheet représente la feuille sur laquelle on travaille.

10 réponses

jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
24 août 2014 à 23:06
A marquer comme "résolu"
0