Si vous importez une liste de données dans Excel, il n’est pas inhabituel de se retrouver avec beaucoup de données dans la colonne A. En fait, il n’est pas inhabituel de ne rien avoir dans l’une des autres colonnes. (Tout dépend de la nature des données que vous importez, bien sûr.) Dans le cadre de l’utilisation des données dans Excel, vous souhaiterez peut-être «réorganiser» les données afin qu’elles soient extraites dans plus de colonnes que la colonne A .

À titre d’exemple, imaginez que vous avez importé vos données et qu’elles ont fini par occuper les lignes 1 à 212 de la colonne A. Ce que vous voulez vraiment, c’est que les données occupent les colonnes A à F, du nombre de lignes nécessaires pour contenir les données. Ainsi, A2 doit être déplacé vers B1, A3 vers C1, A4, vers D1, A5 vers E1, A6 vers F1, puis A7 vers A2, A8 vers B2, etc.

Pour réorganiser les données de cette manière, vous pouvez utiliser la macro suivante.

Sélectionnez les données que vous souhaitez réorganiser, puis exécutez la macro. On vous demande combien de colonnes vous voulez dans les données réorganisées, puis le transfert des données commence.

Sub CompressData()

Dim rSource As Range     Dim rTarget As Range     Dim iWriteRow As Integer     Dim iWriteCol As Integer     Dim iColCount As Integer     Dim iTargetCols As Integer     Dim J As Integer

iTargetCols = Val(InputBox("How many columns?"))

If iTargetCols > 1 Then         Set rSource = ActiveSheet.Range(ActiveWindow.Selection.Address)

If rSource.Columns.Count > 1 Then Exit Sub

iWriteRow = rSource.Row + (rSource.Cells.Count / iTargetCols)

iWriteCol = rSource.Column + iTargetCols - 1         Set rTarget = Range(Cells(rSource.Row, rSource.Column), _           Cells(iWriteRow, iWriteCol))



For J = 1 To rSource.Cells.Count             rTarget.Cells(J) = rSource.Cells(J)

If J > (rSource.Cells.Count / iTargetCols) Then _               rSource.Cells(J).Clear         Next J     End If End Sub

La macro transfère les informations en définissant deux plages: la plage source que vous avez sélectionnée lorsque vous avez exécuté la macro et la plage cible définie par la taille calculée en fonction du nombre de colonnes souhaité. La plage source est représentée par l’objet variable rSource et la plage cible par rTarget. La boucle For …​ Next est utilisée pour transférer réellement les valeurs.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2301) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

lien: / excelribbon-Reorganizing_Data [Réorganisation des données].