Limitation fonction Transpose VBA

Bonjour,

il semblerait qu'il ne soit possible de transposer les données d'une variable tableau que sur 65 536 lignes d'une feuille Excel, soit exactement le nombre de lignes disponibles dans la version 2003.

A partir de la 65 537e ligne, excel (en tout cas ma version : 2007), ignore tout simplement la commande.

Quelqu'un sait-il s'il existe une façon de contourner cette limitation ?

Un exemple en pièce jointe : la boite de dialogue demande le nombre de fois qu'une valeur aléatoire comprise entre 1 et 100 doit être tirée.

La macro enregistre ensuite toutes les valeurs dans un "Tablo" puis transpose la liste des résultats sur la feuille excel (tant que le nombre de tirages n'excède pas 65 536).

Bonjour

Game Over a écrit :

ignore tout simplement la commande.

Ignore car tu as "On Error Resule Next"

C'est bien de connaitre cette limite

moi je connaissais la limite de 255 caractères dans un élément, Transpose n'aime pas

Essayes (Prends juste 1 pour le nombre de tirage)

Tablo(a) = String(256, 65)
Game Over a écrit :

Quelqu'un sait-il s'il existe une façon de contourner cette limitation ?

essayes ce code

Dim yy As Long
Dim Tablo As Variant
Option Base 1

Sub test()
Application.ScreenUpdating = False

  Do
    On Error Resume Next
    yy = InputBox("Nombre d'affichages")
  Loop While Err <> 0
  Err = 0
  On Error GoTo 0       ' On rétablit la gestion des erreurs

  With Sheets("Tirage")
    .Columns(1).ClearContents
    ReDim Tablo(yy, 1)

    For a = 1 To yy
      Tablo(a, 1) = Application.WorksheetFunction.RandBetween(1, 100)
    Next a

    Range("A1").Resize(UBound(Tablo), 1) = Tablo
  End With

  Application.ScreenUpdating = True
  Set Dico = Nothing
End Sub

Tu as raison pour le "On Error Resume Next"...

J'ai vérifié pour Transpose avec plus de 255 caractères et ça ne passe pas non plus.

Finalement, la fonction Transpose peut s'avérer instable dans certaines conditions, à savoir lorsqu'une cellule contient plus de 255 caractères où que l'on souhaite transposer sur plus 65 536 lignes.

Il s'agit alors d'utiliser une variable à 2 dimensions (x,1) qui ne nécessite plus la fonction Transpose alors que si elle n'avait été formatée qu'à une seule dimension, l'utilisation de Transpose devenait obligatoire.

La logique me semble un peu confuse...

Ta solution fonctionne parfaitement, merci...

Bonjour,

Essaye avec le code suivant :

Option Base 1
Dim yy As Long
Dim tablo() As Long
Sub test()
    Application.ScreenUpdating = False
    Do
        On Error Resume Next
        yy = InputBox("Nombre d'affichages")
    Loop While Err <> 0
    Err = 0

    With Sheets("Tirage")
        .Columns(1).ClearContents
        ReDim tablo(yy, 1)
        For i = 1 To yy
         tablo(i, 1) = Application.WorksheetFunction.RandBetween(1, 100)
        Next
        Range("A1:A" & yy) = tablo
    End With
    Application.ScreenUpdating = True
    Set Dico = Nothing
End Sub

édit : trop tard

merci Raja...

Si l'un de vous peut m'expliquer pourquoi ce qui n'est pas possible sur 1 dimension le devient sur 2 alors que "la quantité d'information brute" (les résultats pour chaque tirage), elle, ne change pas d'une méthode à l'autre ??? !!!

Rechercher des sujets similaires à "limitation fonction transpose vba"