James a des données dans une feuille de calcul qui est contenue dans une série de lignes. L’une des colonnes des données comprend des cellules contenant plusieurs lignes par cellule. (Les données de la cellule ont été séparées en lignes en appuyant sur Alt + Entrée entre les éléments.) James aimerait diviser ces données en plusieurs lignes. Par exemple, s’il y avait trois lignes de données dans une seule cellule de la ligne, les données de cette cellule doivent être divisées en trois lignes.

Excel fournit un moyen pratique de diviser les données en colonnes séparées à l’aide de l’outil Texte en colonnes. Cela peut être utilisé pour diviser les données en fonction de la présence du caractère ASCII 10, ce qu’Excel insère lorsque vous appuyez sur Alt + Entrée. Le problème est que même si cela divise avec succès les données en colonnes séparées, il ne les obtient pas en lignes séparées, comme James l’a demandé.

Cela signifie que la solution à ce problème doit inclure l’utilisation d’une macro. Une approche est illustrée dans le code suivant. Dans cet exemple, la macro suppose que vous souhaitez «développer» tout dans la feuille de calcul et que les données de la feuille de calcul commencent à la ligne 1.

Sub CellSplitter()

Dim Temp As Variant     Dim CText As String     Dim J As Integer     Dim K As Integer     Dim L As Integer     Dim iColumn As Integer     Dim lNumCols As Long     Dim lNumRows As Long

iColumn = 4

Set wksSource = ActiveSheet     Set wksNew = Worksheets.Add

iTargetRow = 0     With wksSource         lNumCols = Cells(1,Columns.Count).End(xlToLeft).Column         lNumRows = Cells(Rows.Count,1).End(xlUp).Row         For J = 1 To lNumRows             CText = .Cells(J, iColumn).Value             Temp = Split(CText, Chr(10))

For K = 0 To UBound(Temp)

iTargetRow = iTargetRow + 1                 For L = 1 to lNumCols                     If L <> iColumn Then                         wksNew.Cells(iTargetRow, L) _                           = .Cells(J, L)

Else                         wksNew.Cells(iTargetRow, L) _                           = Temp(K)

End If                 Next L             Next K         Next J     End With End Sub

Notez que pour exécuter la macro, vous devrez spécifier, à l’aide de la variable iColumn, la colonne contenant les cellules à séparer.

Comme écrit ici, la macro sépare les informations dans la quatrième colonne. En outre, les versions séparées des cellules sont stockées dans une nouvelle feuille de calcul, de sorte que la feuille de calcul d’origine n’est pas du tout affectée.

_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 (9396) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Splitting_Information_into_Rows [Diviser les informations en lignes].