Transpose (P'tit vieux): Plus de limites et "bugs" comme celle d'Excel
(AL7 = P'tit vieux 🤕)
Bonjour Ă tous,
J'ai le plaisir de mettre Ă votre disposition une fonction permettant de transposer un tableau Ă 1 ou 2 dimensions.
En bonus, une fonction qui retourne le nombre de dimension du tableau
Mais ça existe ?
Oui, il existe la fonction Excel WorksheetFunctions.Transpose.
Mais elle a les limites suivantes:
- 65536 lignes.
- Ne connait que l'indice de départ 1. Base 1 -> T(1 to a) ou T(1 to a, 1 to b)
- Ne sait pas convertir une chaine ou valeur simple en tableau T(1 ,1) ou T(0,0)
- Si vous lui donnez un tableau T(1 to a, 1 to 1) le résultat sera un tableau T(1 to a)
- Ne sait pas convertir un texte ou valeur en tableau; Ex.: MyStr = "Foo" retournera "Foo"
Revenons Ă ma fonction
Transpose() permet:
- PLUS DE LIMITES
- De transposer un tableau
- Transposer directement les Ranges (Retourne le tableau 2D)
- Retourne toujours un tableau 2D
- Renvoie le tableau transposé soit en base 0 soit en base 1
- De "transposer" une simple chaine de characters ou une valeur: Ex.: MyStr = "Foo" retournera T(1,1) = "Foo" (ou T(0,0) = "Foo")
- Accepte les Objets comme contenu du tableau
Le fichier contient:
- Un module contenant un code pour tester la fonction
- Un module de classe cls_Tools contenant la fonction Transpose.
- La fonction de CountArrayDim. Elle sert à connaitre le nombre de dimensions du tableau passé
Le fichier Excel contient :
- 2 Feuilles ("Janvier" et "Result") pour affichage
- un module avec un code pour vous permettre de tester la fonction
- Un module de classe contenant la fonction Transpose() et la fonction CountArrayDim(). Cette dernière est utiliser par Transpose() compter les nombre de dimensions d'un tableau.
PS:
Le code est libre d'accés et de droit.
Merci de laisser l'auteur et/ou d'y faire référence si vous l'utilisez et/ou le modifiez. (Simple "règle de César": Laisser à César ce qui appartient à César