VBA : Limite de la méthode Transpose

Décembre 2016



ou comment éviter l'erreur 1004 et/ou l'erreur 13 lorsque l'on Transpose des données...


Introduction

Que fait cette méthode?

Extrait de l'aide en ligne msdn : source
Renvoie une plage de cellules verticales sous forme de plage horizontale, ou inversement. Utilisez la fonction TRANSPOSE pour inverser l'orientation verticale et horizontale d'une feuille de calcul.

Il faut donc, en premier lieu faire attention aux limites de la feuille de calcul.

Limites par version

A lire pour connaitre les limites des feuilles de calcul
En gros, sous Excel 2003, si vous voulez transposer, en colonnes, une plage de 1 000 lignes, vous allez forcément bugguer, Excel 2003 ne possédant que 256 colonnes.
Idem si, sous 2007, vous copiez 16 385 lignes et souhaitez les transposer en colonnes.

Oui, mais alors, lorsque l'on travaille en mémoire, sur des variables tableaux, ces limites n'existent pas!...

Limites en mémoire

Lorsque l'on travaille sur de grosses variables tableaux, on peux souhaiter les transposer pour les placer sur une feuille de calcul.
Par exemple, il n'est pas rare d'avoir en mémoire un tableau à 1 dimension (et donc en "colonnes") de 100 000 données. Pour le placer dans la feuille, il suffirait donc d'utiliser :
[A1].Resize(UBound(tb)) = Application.Transpose(tb)

Malheureusement, vous obtenez une erreur 13 (ou 1004 selon les cas).
La méthode transpose est limitée à 65 536 valeurs.

Contournement

Pour pallier à cela, il faut soit :
  • Travailler par "paquets" de 65 000 valeurs
  • Créer sa fonction personnalisée


Vous trouverez un exemple de fonction Transposition ICI.

A voir également :

Ce document intitulé «  VBA : Limite de la méthode Transpose  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.