Un tableau oui, mais pas la fonction Index qui est utilisée. Limitée à 65536 lignes.
PS : dans ce cas c'est peut-être plus simple de revenir à ta proposition avec colonnes masquées
Version imprimable
Un tableau oui, mais pas la fonction Index qui est utilisée. Limitée à 65536 lignes.
PS : dans ce cas c'est peut-être plus simple de revenir à ta proposition avec colonnes masquées
Bonjour,
pour le Transpose, en dehors d'une classique boucle avec des variables tableau, on peut dépasser la limite via un objet Windows …
Mais ces diverses limitations internes d'Excel confirment bien qu'il n'a pas la vocation de gérer des bases de données !
Mieux vaut alors se tourner vers Access ou autre SGBD face à une de ces limitations, sans compter la fiabilité, la sécurité, …
_________________________________________________________________________________________________________Je suis Paris, Nice, Bruxelles, Charlie, …
Bonsoir,
La petite amélioration dont je parlais, comme cela c'est assez malléable et ça fait aussi bien une petite plage qu'une grande plage
en outre on pallie à la limite sur Index des 65536 lignes comme l'a indiqué eriic
et bien sur à n'utilisé que dans le contexte d'excel car comme la si bien signalé Marc-L (que je salue au passage) excel n'est pas une SGBD …
J'ai tenu à faire ce code car il peut être très pratique dans bien des situations donc à prendre ou à laisser
Voilà
le code maintenant :
et là je viens de penser que l'on pourrait rajouter dans les paramètres le décalage … pfff :D, je verrai cela plus tardCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub IndexPlage() 'Base du code principal Marc-L 'Ajout/modification RyuAutodidacte 03/11/2016 HTab = Feuil1.Cells(Rows.Count, 1).End(xlUp).Row ' Xlig = Int(HTab / 65536) + 1 Application.ScreenUpdating = False For i = 1 To Xlig If Xlig = 1 Then M = 0: M2 = 65536 - (HTab Mod 65536) Else If Xlig = i Then M = 65536 - (HTab Mod 65536) With Feuil1.Range("A" & 1 + (i - 1) * 65536 - M & ":" & "J" & 65536 + (i - 1) * 65536 - M - M2) ' colonne (ici "A" et "J") à adapter selon critères 'Attention code basé sur la 1è ligne donc prendre en compte le décalage si il y a VA = Application.Index(.Value, Evaluate("ROW(1:" & .Rows.Count & ")"), [{1,3,1}]) ' Code donné par Marc-L :1, 3 et 5 sont les colonnes choisies End With 'on peut aussi choisir l'ordre des colonnes comme [{5,3,1}] par exemple Feuil2.Range("A" & 1 + (i - 1) * 65536 - M).Resize(UBound(VA, 1), UBound(VA, 2)) = VA Next Application.ScreenUpdating = True End Sub