Fonction Transpose qui bogue pour une cellule avec plus de 255 caractères

Essart

XLDnaute Junior
Bonjour à tous,

J'essaie d'exploiter le fichier de JB : Listbox triée

http://boisgontierjacques.free.fr/fichiers/Formulaire/ListBoxTriee.xls

et je rencontre le problème suivant :

j'ai des cellules qui contiennent plus de 255 caractères qui sont concernées,
alors la ligne :
Application.Transpose
bogue quand cela arrive....
et si je réduis à moins de 255 caractères, tout fonctionne !

Dans la cellule B24 du fichier joint, j'ai 256 caractères et cela bogue ...
si on en enlève un, tout fonctionne ...

Y aurait-il un moyen pour contourner ce problème...

Merci à tous pour votre aide

Essart
 

Pièces jointes

  • ListBoxSelectionTriee.xls
    96.5 KB · Affichages: 38

ROGER2327

XLDnaute Barbatruc
Re : Fonction Transpose qui bogue pour une cellule avec plus de 255 caractères

Bonjour Essart.


Deux solutions :​
  1. Réécrivez la procédure UserForm_Initialize pour ne pas avoir à faire avec l'antique et dépassée fonction TRANSPOSE d'Excel.
    Code:
    Private Sub UserForm_Initialize()
      Dim f As Worksheet, a As Range, j&, i&, c()
      Set f = Sheets("AMIANTE listes A et B")
      a = f.Range("A24:F174")
      Me.Liste_ecarts.ColumnCount = 2
      Me.Liste_ecarts.ColumnWidths = "710;20"
      For i = LBound(a) To UBound(a)
          If a(i, 6) = "OUI" And a(i, 1) <> "" And a(i, 2) <> "" Then j = j + 1
      Next i
      ReDim Preserve c(1 To j, 1 To 2)
      j = 0
      For i = LBound(a) To UBound(a)
          If a(i, 6) = "OUI" And a(i, 1) <> "" And a(i, 2) <> "" Then
              j = j + 1
              c(j, 1) = a(i, 2)
              c(j, 2) = a(i, 1)
          End If
       Next i
       Call Tri(c(), 1, LBound(c, 1), UBound(c, 1))
       Me.Liste_ecarts.List = c
    End Sub
  2. Écrivez une fonction de transposition efficace du genre de celle-ci :
    VB:
    Function transp(tableau)
    Dim i&, j&, l1&, l2&, u1&, u2&, v()
        l1 = LBound(tableau, 1): u1 = UBound(tableau, 2)
        l2 = LBound(tableau, 2): u2 = UBound(tableau, 2)
        ReDim v(l2 To u2, l1 To u1)
        For j = l1 To u1: For i = l2 To u2: v(i, j) = tableau(j, i): Next i, j
        transp = v
    End Function
    et remplacer la ligne
    VB:
       c = Application.Transpose(b)
    de votre code par celle-là :
    VB:
       c = transp(b)


Bonne soirée.


ℝOGER2327
#7239


Mercredi 18 Clinamen 141 (Les 27 Êtres Issus des Livres Pairs - Vacuation)
20 Germinal An CCXXII, 5,7694h - ruche
2014-W15-3T13:50:48Z
 
Dernière édition:

Essart

XLDnaute Junior
Re : Fonction Transpose qui bogue pour une cellule avec plus de 255 caractères

Bonjour Roger2327,

Merci pour votre aide

je vais les modifications dans le fichier (qui est beaucoup plus gros que celui mis en pièce jointe...)
et reviens vers vous de suite pour vous dire.

Merci pour votre aide précieuse

Essart
 

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz