Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Est-il possible d'utiliser la fonction Application.transpose pour transposer une array1 à une array2 (à 2 dimensions) ?
Je suis à peu près sûr d'avoir déjà cherché à faire ça, d'avoir conclu que c'était impossible et qu'il fallait passer par une double boucle mais je préfère en avoir le cœur net.
Si c'est bien le cas, je me dis que je pourrais me créer une fonction ad hoc que je pourrais promener de prog en prog.
P.S : désolé pour le titre mais j'essaye d'y coller les mots-clés, c'est un vrai cauchemar de chercher des infos sur les arrays sur le net, certaines infos / questions sont répétées des milliers de fois, les trucs plus précis sont noyés.
Re : utiliser application.Transpose entre deux array tableau deux dimensions bidimens
Bonjour Pierrot,
Je ne vois pas vraiment à quoi tu penses. Suivant ta piste j'ai tenté de pré-dimensionner mon tableau, sans succès.
Pour l'expliquer plus concrètement, de la même manière que l'on transférer un tableau / array à un autre array ainsi :
Tab2 = Tab1
Avec Tab2 sans dimension déclarées mais Tab1 qui a 2 dimensions, les 2 étant Variant, je voudrais savoir s'il est possible de faire :
Tab2 = Application.Transpose(Tab1)
Re : utiliser application.Transpose entre deux array tableau deux dimensions bidimens
J'y perds totalement mon latin, j'ai repris ton exemple Pierrot, ajouté une ligne sur la 2è dimension, etc, ça passe.
Je me suis dit que cela venait de la création par Range mais j'ai bien l'impression de faire la même chose.
L'un de vous aurait-il la patience de jeter un oeil à ce bout de code ?
Code:
Public Sub CompaZ()
Dim TabSourceN() As Variant
Dim TabSourceM() As Variant
Dim TabCompaZ() As Variant
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Init
LigTit = 1
ColDon = 1
TabTitreDoc = Application.Range("Titre_Rap" & TipDoc)
DerCol = UBound(TabTitreDoc, 2)
'Pompe N
With Workbooks(Wb_CompaZ).Worksheets(BDD_Z_N)
If .FilterMode Then .ShowAllData
DerLig = .Cells(SDerLig, ColDon).End(xlUp).Row
If DerLig <= LigTit Then DerLig = LigTit + 1
TabSourceN = .Range(.Cells(LigTit + 1, ColDon), .Cells(DerLig, DerCol)).Value 'N'inclut pas la ligne de titre
ReDim Preserve TabSourceN(UBound(TabSourceN, 1), UBound(TabSourceN, 2) + 1) 'Colonne supplémentaire pour marquer vérifié
End With
TabCompaZ = Application.Transpose(TabSourceN) '<= Type mismatch
Re : utiliser application.Transpose entre deux array tableau deux dimensions bidimens
Merci Pierrot, j'ai tenté mais sans résultat. Mais je n'étais pas au bout de mes surprises, je sens que vous allez aimer : 264
Le même code fonctionne si je remplace ma variable DerLig (qui indique 400 lignes) par 264 :
Code:
TabSourceN = .Range(.Cells(LigTit + 1, ColDon), .Cells(264, DerCol)).Value 'N'inclut pas la ligne de titre
End With
TabCompaZ = Application.Transpose(TabSourceN) '= Aucun problème.
D'où ça vient ? J'ai repensé à la barrière des 65 000 lignes connue sur cette fonction que l'on a d'excel 97 parce que, après avoir contourné mon problème plus haut faute de solution, j'ai ensuite eu un autre plantage, à la toute fin, sur une ligne que j'ai déjà utilisée 20 fois déjà en d'autres cas:
Je n'y comprends rien.
Ou plus précisément, je comprends que les 264 correspondent aux colonnes tout comme la limite des 65536 sont les lignes ante-.xlsx mais ce que je ne comprends pas, c'est comment je ne m'y suis jamais confronté jusqu'ici, c'est improbable.
Du coup, j'ai vérifié un autre prog/fichier où j'ai cette même ligne :
UBound(TabBdd, 2) = 26 000 lignes et pas un problème pour livrer sur la feuille. Les options sont les mêmes, ce sont des variants, le contenu est similaires (texte, chiffre, date, pas de formules)...
Ma conclusion un peu bas du front serait donc : mon fichier excel a-t-il la vérole ?
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD