Bonjour Patrick
OK
Oui pour le 1D vers le 2D. Mais là tu chipotes
Et puis ... C’est du bonus qui m’est souvent utile.
J’attends la sanction
Bon j'ai testé
positif:
visiblement le test transpose fonctionne
négatif:
j'ai pas de mot pour décrire ce que j'ai vu dans les codes
tout d'abords il est inintelligible punaise je vais mettre longtemps a le décortiquer
ensuite vu la masse de code je me demande par ou passe t il pour transformer des lignes en colonnes et vise et versa
pour le 1D to 2D
Oui pour le 1D vers le 2D. Mais là tu chipotes
Et puis ... C’est du bonus qui m’est souvent utile.
ben non justement je ne chipote pas puisque c'est ton sujet
imagine un moins averti qui se dirait chouette j'ai une fonction transpose a disposition
et qu'il travaille sur une plage de réception le pauvre il va tourner longtemps avant de comprendre que ta fonction ne transpose pas un array mais le transforme simplement en 2D
alors je ne sais pas trop pourquoi tout ça dans une classe (tu nous le diras)
mais pour ma part je pense que justement puisque nous somme sensé travailler hors limite excel
il faut économiser de l’énergie et là sans vouloir t'offenser c'est tout le contraire
je sais pas si tu a vu la petite fonction que je t'ai donné mais elle fait exactement ce que worksheetfunction.transpose fait et rien de plus sauf que l'on a pas de limite si ce n'est que la puissance de ton pc et je fait ça en moins de 15 lignes
je pense qu'il y a eu beaucoup de travail ça c'est sur
mais tu aurais du venir nous voir a fin que le moteur de base soit fait
2° la conversion base 0 ou 1
là encore il y aurait encore à dire
une fonction transpose transpose et c'est tout elle n'est pas à pour faire la vaisselle et la lessive
chacun son rôle
je serais toi je séparerais ces deux aspects de la chose
d'autant plus que diviser pour mieux régner est le maitre mot en vba
juste pour m'amuser car je suis un joueur
j'ai affublé ma petite fonction de la conversion base 0 to base 1 l'inverse est très rare(le besoin n'existe pas)
et là encore je fait avec 2 trois lignes de plus et ça fonctionne très bien
mais je ne la donnerais pas puisque c'est contraire a ce que je viens de dire un peu plus haut
mais le jeu fut intéressant
voilà ce n'est pas une sanction du tout( je ne sanctionne pas ce qui bossent)
juste un éclairage sur ce qui est raisonnable
et pour t'éclairer
le moteur de transposition (raisonnement )
1° tester avec gestion d'erreur du ubound(tableau,2)dans une variable long(un array déclenche l'erreur)
2° si variable= 0 variable =1
(et pas 1 to 1 !!!!!!!!!!!!!)
car dimensionner avec un nombre tout court implique systématiquement un base 0 même si c'est 1
3°reconstruction du tableau
- si variable=0 redim tableau(lbound to ubound,1)(et pas 1 to 1 !!!!!!!!!!!!!)
- sinon redim avec le lbound et ubound dim 1 inversé avec la dim2
- boucle sur le ubound
- si variable=0 alors c'est nouveau tableau(index boucle,1)=le tableau original(index boucle)
- sinon
- boucle sur dim 2
- nouveau tableau(index boucle dim2,index boucle dim 1)=tableau(index boucle dim1,index boucle dim2)
et voila c'est terminé c'est pas la peine d'en faire plus
et ça prend moins de 15 lignes dans une petite fonction dans un module standard
libre à toi de faire une petite fonction à coté de conversion 2D pour un array 4/5 lignes
et voir même de t'en servir en pré traitement dans la fonction transpose pour l'array
voila j’espère ne pas être trop dur