VBA: transposez datatables d'une gamme définie d'un classur à l'autre

Mon projet consiste à copyr des données à partir de files dans un dossier en un excel. Les files dans le dossier ont datatables en lignes et j'ai besoin de données à transposer à l'un Excel (DataBase Excel). J'ai trouvé un code qui est très proche de ce dont j'ai besoin et j'essaie de modifier ce code pour moi. Il semble que j'ai juste besoin de modifier la désintégration dans le code ci-dessous, mais je ne suis pas en mesure d'get des réglages.

Le code complet peut être trouvé ici: http://www.rondebruin.nl/win/s3/win008.htm

Qu'est-ce que je manque pour transposer datatables de Rows to columns ???

If Not sourceRange Is Nothing Then SourceCcount = sourceRange.Columns.Count If Cnum + SourceCcount >= BaseWks.Columns.Count Then MsgBox "Sorry there are not enough columns in the sheet" BaseWks.Columns.AutoFit mybook.Close savechanges:=False GoTo ExitTheSub Else 'Copy the file name in the first row With sourceRange BaseWks.Cells(1, Cnum). _ Resize(, .Columns.Count).Value = MyFiles(Fnum) End With 'Set the destrange Set destrange = BaseWks.Cells(2, Cnum) 'Set destrange = BaseWks.Range("A" & 1) 'we copy the values from the sourceRange to the destrange With sourceRange Set destrange = destrange. _ Resize(.Rows.Count, .Columns.Count) '.PasteSpecial Paste:=xlValues, Transpose:=True 'destrange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True End With destrange.Value = sourceRange.Value Cnum = Cnum + SourceCcount End If End If mybook.Close savechanges:=False End If 

Notez que de Bruin n'utilise pas la méthode de copy. Essayez ceci (pas testé)

 'Set the destrange Set destrange = BaseWks.Cells(2, Cnum) 'Set destrange = BaseWks.Range("A" & 1) 'we copy the values from the sourceRange to the destrange With SourceRange 'NOTE we reverse the rows and columns Set destrange = destrange. _ Resize(.Columns.count, .Rows.count) End With 'NOTE we transpose the SourceRange. If SourceRange has a huge number of rows, might have to do this manually. destrange.Value = WorksheetFunction.Transpose(SourceRange.Value) _ 'Set the destrange Set destrange = BaseWks.Cells(2, Cnum) 'Set destrange = BaseWks.Range("A" & 1) 'we copy the values from the sourceRange to the destrange With SourceRange 'NOTE we reverse the rows and columns Set destrange = destrange. _ Resize(.Columns.count, .Rows.count) End With 'NOTE we transpose the SourceRange. If SourceRange has a huge number of rows, might have to do this manually. destrange.Value = WorksheetFunction.Transpose(SourceRange.Value) 

Ron, la solution que vous avez posée était correcte. J'ai eu une faute de frappe lorsque je mettais à jour mon code. Remarque. J'ai également dû faire d'autres mises à jour comme créer et échanger Cnum pour Rnum afin que datatables soient ajoutées par des lignes au lieu de colonnes. Que vous pour votre time et votre réponse rapide. Je n'essayais pas d'insister sur le fait que Bruin utilisait la méthode de copy, j'essayais de find le nom de la méthode qu'il utilisait. Je suppose qu'il n'a pas vraiment de nom. Il utilise simplement des arrays pour déplacer datatables.