Transposer

E

Eric

Guest
Bonjour,

problèmes.., j'ai une feuille avec des données
de A1 à GW1662 du style

Dupont 1234 87963 4587 9996 77888
Durand 2222 8897 7855 2299 44555

Je désirerai en VB obtenir

dupont Durand
1234 2222
87963 8897
4587 7855
9996 2299
77888 44555

lorsque je fait copier-collage spéciale si je dépasse 200 lignes, elle me donne message d'erreur du type'impossible de coller les infos...etc..'
merci de votre aide

Eric
 

JORDAN

XLDnaute Impliqué
Bonjour Eric,

Un petit essai en PJ. [file name=TRANSPO.zip size=7204]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TRANSPO.zip[/file]
 

Pièces jointes

  • TRANSPO.zip
    7 KB · Affichages: 16
  • TRANSPO.zip
    7 KB · Affichages: 15
  • TRANSPO.zip
    7 KB · Affichages: 15

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour Eric, bonjour à toutes et à tous :)

C'est assez logique que tu ne puisses pas transposer ton tableau s'il a 1662 lignes : Excel est limité à 256 colonnes !!!

Même en VBA, impossible de contourner cela sauf à placer tes données dans plusieurs feuilles... Est-ce ce que tu souhaites ?

A+

Salut Jordan, je 'avais pas rafraîchi ;)

Message édité par: Charly2, à: 23/01/2006 13:22
 

Hervé

XLDnaute Barbatruc
bonjour eric

tu peux peut etre essayer ce code :


Sub Bouton1_QuandClic()
Dim tablo As Variant

tablo = Range('a1').CurrentRegion
'stock les données
Cells.Clear
'efface les cellules
Range('a1').Resize(UBound(tablo, 2),
UBound(tablo, 1)) = Application.Transpose(tablo) 'renvoi les données
End Sub


salut

EDITION : salut jordan, charly

Bien vu charly, j'avais pas fait gaffe :)

Message édité par: hervé, à: 23/01/2006 13:29
 

Charly2

Nous a quittés en 2006
Repose en paix
Re à tout le monde, salut Ândré :)

Bon, tu auras la choix entre une formule, celle d'Ândré, ou du code sous VBA ;)

Voici la procédure principale :

Code:
Sub SpecialTranspose()
'
Dim i%
Dim DerLigne&, DerCol%
Dim NbFeuilles%
'
  Application.ScreenUpdating = False

  With Sheets('Feuil1')
    '
    ' Initialisation variables DerLigne, DerCol et NbFeuilles
    DerLigne = Sheets('Feuil1').Range('A65536').End(xlUp).Row
    DerCol = Sheets('Feuil1').Range('IV1').End(xlToLeft).Column
    NbFeuilles = DerLigne \\ 256 + IIf(DerLigne Mod 256, 1, 0)
    '
    ' pour chaque partie du tableau initial de 256 lignes, on crée
    ' un nouvelle feuille et on transpose les données traitées de
    ' la feuille 1 vers cette nouvelle feuille
    ' NB : L'utilisation des tableaux serait plus simple mais sous
    ' XL 97, je n'ai pas la méthode Transpose de l'objet Application.
    For i = 1 To NbFeuilles
      Sheets.Add after:=Sheets(Sheets.Count)
      On Error Resume Next
      ActiveSheet.Name = 'Transposée ' & i
      On Error GoTo 0
      .Cells(256 * (i - 1) + 1, 1).Resize(256, DerCol).Copy
      Range('A1:IV' & DerCol).PasteSpecial Transpose:=True
    Next i
    .Select
  End With
  Application.ScreenUpdating = True
End Sub

A voir dans le fichier joint.

[file name=Transpose_Eric.zip size=11042]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Transpose_Eric.zip[/file]

A+
 

Pièces jointes

  • Transpose_Eric.zip
    10.8 KB · Affichages: 19

Statistiques des forums

Discussions
312 428
Messages
2 088 328
Membres
103 814
dernier inscrit
Lolo280277