Soit, dans un onglet EXCEL, une zone de cellules contenant du texte.
Pour toutes les colonnes sauf une, chaque cellule contient une ligne de texte.
Pour la colonne singulière, chaque cellule contient une ou plusieurs lignes de texte. (Lorsqu'une cellule contient plusieurs lignes
de texte, cela signifie que chaque ligne de texte est séparée de la suivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et des rows que je souhaite considérer.
Je bute sur l'algorithme VBA permettant de scinder chaque row en autant de rows qu'il y a de lignes de texte.
Exemple :
A B C
1 renault essence break
diesel
2 citroen auto ABS
méca
3 peugeot clim vitres élec.
4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C
1 renault essence break
2 renault diesel break
3 citroen auto ABS
4 citroen méca ABS
5 peugeot clim vitres élec.
6 ford 3 portes airbag
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pounet95
Bonjour,
Peut-être avec ceci à adapter en fonction des cellules de la plage sélectionnée
Sub toto() Dim rtrn(20) As String Dim maCel As Range Set maCel = [B3]
nb = 1 'nbre de CHR(10) deb = 1 'début de la chaine extraite For i = 1 To Len(maCel) If Mid(maCel, i, 1) = Chr(10) Then rtrn(nb) = Mid(maCel, deb, i - deb) nb = nb + 1 deb = i + 1 End If Next i rtrn(nb) = Mid$(maCel, deb, Len(maCel) - deb + 1)
If nb > 1 Then Rows(maCel.Row + 1 & ":" & maCel.Row + nb - 1).Select Selection.Insert For j = 1 To nb maCel.Offset(j - 1, 0) = rtrn(j) maCel.Offset(j - 1, -1) = maCel.Offset(0, -1) Next j End If End Sub
Bonne journée Pounet95
"Quetzalcoatl" a écrit dans le message de news: 47069331$0$25917$
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte. Pour toutes les colonnes sauf une, chaque cellule contient une ligne de texte. Pour la colonne singulière, chaque cellule contient une ou plusieurs lignes de texte. (Lorsqu'une cellule contient plusieurs lignes de texte, cela signifie que chaque ligne de texte est séparée de la suivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et des rows que je souhaite considérer. Je bute sur l'algorithme VBA permettant de scinder chaque row en autant de rows qu'il y a de lignes de texte.
Exemple :
A B C 1 renault essence break diesel 2 citroen auto ABS méca 3 peugeot clim vitres élec. 4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C 1 renault essence break 2 renault diesel break 3 citroen auto ABS 4 citroen méca ABS 5 peugeot clim vitres élec. 6 ford 3 portes airbag
Merci d'avance pour toute aide. Cordialement.
Bonjour,
Peut-être avec ceci à adapter en fonction des cellules de la plage
sélectionnée
Sub toto()
Dim rtrn(20) As String
Dim maCel As Range
Set maCel = [B3]
nb = 1 'nbre de CHR(10)
deb = 1 'début de la chaine extraite
For i = 1 To Len(maCel)
If Mid(maCel, i, 1) = Chr(10) Then
rtrn(nb) = Mid(maCel, deb, i - deb)
nb = nb + 1
deb = i + 1
End If
Next i
rtrn(nb) = Mid$(maCel, deb, Len(maCel) - deb + 1)
If nb > 1 Then
Rows(maCel.Row + 1 & ":" & maCel.Row + nb - 1).Select
Selection.Insert
For j = 1 To nb
maCel.Offset(j - 1, 0) = rtrn(j)
maCel.Offset(j - 1, -1) = maCel.Offset(0, -1)
Next j
End If
End Sub
Bonne journée
Pounet95
"Quetzalcoatl" <quetzalHIHIHIcoatl@free.fr.invalid> a écrit dans le message
de news: 47069331$0$25917$ba4acef3@news.orange.fr...
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte.
Pour toutes les colonnes sauf une, chaque cellule contient une ligne de
texte.
Pour la colonne singulière, chaque cellule contient une ou plusieurs
lignes de texte. (Lorsqu'une cellule contient plusieurs lignes de texte,
cela signifie que chaque ligne de texte est séparée de la suivante par le
caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et des
rows que je souhaite considérer.
Je bute sur l'algorithme VBA permettant de scinder chaque row en autant de
rows qu'il y a de lignes de texte.
Exemple :
A B C
1 renault essence break
diesel
2 citroen auto ABS
méca
3 peugeot clim vitres élec.
4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C
1 renault essence break
2 renault diesel break
3 citroen auto ABS
4 citroen méca ABS
5 peugeot clim vitres élec.
6 ford 3 portes airbag
Peut-être avec ceci à adapter en fonction des cellules de la plage sélectionnée
Sub toto() Dim rtrn(20) As String Dim maCel As Range Set maCel = [B3]
nb = 1 'nbre de CHR(10) deb = 1 'début de la chaine extraite For i = 1 To Len(maCel) If Mid(maCel, i, 1) = Chr(10) Then rtrn(nb) = Mid(maCel, deb, i - deb) nb = nb + 1 deb = i + 1 End If Next i rtrn(nb) = Mid$(maCel, deb, Len(maCel) - deb + 1)
If nb > 1 Then Rows(maCel.Row + 1 & ":" & maCel.Row + nb - 1).Select Selection.Insert For j = 1 To nb maCel.Offset(j - 1, 0) = rtrn(j) maCel.Offset(j - 1, -1) = maCel.Offset(0, -1) Next j End If End Sub
Bonne journée Pounet95
"Quetzalcoatl" a écrit dans le message de news: 47069331$0$25917$
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte. Pour toutes les colonnes sauf une, chaque cellule contient une ligne de texte. Pour la colonne singulière, chaque cellule contient une ou plusieurs lignes de texte. (Lorsqu'une cellule contient plusieurs lignes de texte, cela signifie que chaque ligne de texte est séparée de la suivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et des rows que je souhaite considérer. Je bute sur l'algorithme VBA permettant de scinder chaque row en autant de rows qu'il y a de lignes de texte.
Exemple :
A B C 1 renault essence break diesel 2 citroen auto ABS méca 3 peugeot clim vitres élec. 4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C 1 renault essence break 2 renault diesel break 3 citroen auto ABS 4 citroen méca ABS 5 peugeot clim vitres élec. 6 ford 3 portes airbag
Merci d'avance pour toute aide. Cordialement.
JB
Bonjour,
ligne = 1 For Each c In Range([B1], [B65000].End(xlUp)) a = Split(c.Value, Chr(10)) For i = 0 To UBound(a) Sheets(2).Cells(ligne, 1) = c.Offset(0, -1) Sheets(2).Cells(ligne, 2) = a(i) Sheets(2).Cells(ligne, 3) = c.Offset(0, 1) ligne = ligne + 1 Next i Next c
http://cjoint.com/?kghRPY8zX8
JB http://boisgontierjacques.free.fr
On 5 oct, 21:40, "Quetzalcoatl" wrote:
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte. Pour toutes les colonnes sauf une, chaque cellule contient une ligne de t exte. Pour la colonne singulière, chaque cellule contient une ou plusieurs li gnes de texte. (Lorsqu'une cellule contient plusieurs lignes de texte, cela signifie que chaque ligne de texte est séparée de la s uivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et de s rows que je souhaite considérer. Je bute sur l'algorithme VBA permettant de scinder chaque row en autant d e rows qu'il y a de lignes de texte.
Exemple :
A B C 1 renault essence break diesel 2 citroen auto ABS méca 3 peugeot clim vitres élec. 4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C 1 renault essence break 2 renault diesel break 3 citroen auto ABS 4 citroen méca ABS 5 peugeot clim vitres élec. 6 ford 3 portes airbag
Merci d'avance pour toute aide. Cordialement.
Bonjour,
ligne = 1
For Each c In Range([B1], [B65000].End(xlUp))
a = Split(c.Value, Chr(10))
For i = 0 To UBound(a)
Sheets(2).Cells(ligne, 1) = c.Offset(0, -1)
Sheets(2).Cells(ligne, 2) = a(i)
Sheets(2).Cells(ligne, 3) = c.Offset(0, 1)
ligne = ligne + 1
Next i
Next c
http://cjoint.com/?kghRPY8zX8
JB
http://boisgontierjacques.free.fr
On 5 oct, 21:40, "Quetzalcoatl" <quetzalHIHIHIco...@free.fr.invalid>
wrote:
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte.
Pour toutes les colonnes sauf une, chaque cellule contient une ligne de t exte.
Pour la colonne singulière, chaque cellule contient une ou plusieurs li gnes de texte. (Lorsqu'une cellule contient plusieurs lignes
de texte, cela signifie que chaque ligne de texte est séparée de la s uivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et de s rows que je souhaite considérer.
Je bute sur l'algorithme VBA permettant de scinder chaque row en autant d e rows qu'il y a de lignes de texte.
Exemple :
A B C
1 renault essence break
diesel
2 citroen auto ABS
méca
3 peugeot clim vitres élec.
4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C
1 renault essence break
2 renault diesel break
3 citroen auto ABS
4 citroen méca ABS
5 peugeot clim vitres élec.
6 ford 3 portes airbag
ligne = 1 For Each c In Range([B1], [B65000].End(xlUp)) a = Split(c.Value, Chr(10)) For i = 0 To UBound(a) Sheets(2).Cells(ligne, 1) = c.Offset(0, -1) Sheets(2).Cells(ligne, 2) = a(i) Sheets(2).Cells(ligne, 3) = c.Offset(0, 1) ligne = ligne + 1 Next i Next c
http://cjoint.com/?kghRPY8zX8
JB http://boisgontierjacques.free.fr
On 5 oct, 21:40, "Quetzalcoatl" wrote:
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte. Pour toutes les colonnes sauf une, chaque cellule contient une ligne de t exte. Pour la colonne singulière, chaque cellule contient une ou plusieurs li gnes de texte. (Lorsqu'une cellule contient plusieurs lignes de texte, cela signifie que chaque ligne de texte est séparée de la s uivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et de s rows que je souhaite considérer. Je bute sur l'algorithme VBA permettant de scinder chaque row en autant d e rows qu'il y a de lignes de texte.
Exemple :
A B C 1 renault essence break diesel 2 citroen auto ABS méca 3 peugeot clim vitres élec. 4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C 1 renault essence break 2 renault diesel break 3 citroen auto ABS 4 citroen méca ABS 5 peugeot clim vitres élec. 6 ford 3 portes airbag
Merci d'avance pour toute aide. Cordialement.
Quetzalcoatl
Bonjour,
Waw ! Plus simple que les directions que j'avais prises. Merci .
Et pour ceux (excel 97) qui n'ont pas la fonction Split (trouvée sur le ouèbe) :
Function Split(sString As String, sSep As String) As Variant
Dim aRet() As String Dim iI As Integer Dim iLen As Integer Dim sBuff As String Dim sChar As String
ReDim aRet(0) iLen = Len(sString) sBuff = ""
For iI = 1 To iLen sChar = Mid$(sString, iI, 1) If sChar = sSep Then aRet(UBound(aRet)) = sBuff sBuff = "" ReDim Preserve aRet(UBound(aRet) + 1) ElseIf iI = iLen Then sBuff = sBuff & sChar aRet(UBound(aRet)) = sBuff Else sBuff = sBuff & sChar End If Next iI Split = aRet End Function
"JB" a écrit dans le message de news: Bonjour,
ligne = 1 For Each c In Range([B1], [B65000].End(xlUp)) a = Split(c.Value, Chr(10)) For i = 0 To UBound(a) Sheets(2).Cells(ligne, 1) = c.Offset(0, -1) Sheets(2).Cells(ligne, 2) = a(i) Sheets(2).Cells(ligne, 3) = c.Offset(0, 1) ligne = ligne + 1 Next i Next c
http://cjoint.com/?kghRPY8zX8
JB http://boisgontierjacques.free.fr
On 5 oct, 21:40, "Quetzalcoatl" wrote:
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte. Pour toutes les colonnes sauf une, chaque cellule contient une ligne de texte. Pour la colonne singulière, chaque cellule contient une ou plusieurs lignes de texte. (Lorsqu'une cellule contient plusieurs lignes de texte, cela signifie que chaque ligne de texte est séparée de la suivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et des rows que je souhaite considérer. Je bute sur l'algorithme VBA permettant de scinder chaque row en autant de rows qu'il y a de lignes de texte.
Exemple :
A B C 1 renault essence break diesel 2 citroen auto ABS méca 3 peugeot clim vitres élec. 4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C 1 renault essence break 2 renault diesel break 3 citroen auto ABS 4 citroen méca ABS 5 peugeot clim vitres élec. 6 ford 3 portes airbag
Merci d'avance pour toute aide. Cordialement.
Bonjour,
Waw ! Plus simple que les directions que j'avais prises. Merci .
Et pour ceux (excel 97) qui n'ont pas la fonction Split (trouvée sur le ouèbe) :
Function Split(sString As String, sSep As String) As Variant
Dim aRet() As String
Dim iI As Integer
Dim iLen As Integer
Dim sBuff As String
Dim sChar As String
ReDim aRet(0)
iLen = Len(sString)
sBuff = ""
For iI = 1 To iLen
sChar = Mid$(sString, iI, 1)
If sChar = sSep Then
aRet(UBound(aRet)) = sBuff
sBuff = ""
ReDim Preserve aRet(UBound(aRet) + 1)
ElseIf iI = iLen Then
sBuff = sBuff & sChar
aRet(UBound(aRet)) = sBuff
Else
sBuff = sBuff & sChar
End If
Next iI
Split = aRet
End Function
"JB" <boisgontier@hotmail.com> a écrit dans le message de news: 1191649431.321340.285710@y42g2000hsy.googlegroups.com...
Bonjour,
ligne = 1
For Each c In Range([B1], [B65000].End(xlUp))
a = Split(c.Value, Chr(10))
For i = 0 To UBound(a)
Sheets(2).Cells(ligne, 1) = c.Offset(0, -1)
Sheets(2).Cells(ligne, 2) = a(i)
Sheets(2).Cells(ligne, 3) = c.Offset(0, 1)
ligne = ligne + 1
Next i
Next c
http://cjoint.com/?kghRPY8zX8
JB
http://boisgontierjacques.free.fr
On 5 oct, 21:40, "Quetzalcoatl" <quetzalHIHIHIco...@free.fr.invalid>
wrote:
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte.
Pour toutes les colonnes sauf une, chaque cellule contient une ligne de texte.
Pour la colonne singulière, chaque cellule contient une ou plusieurs lignes de texte. (Lorsqu'une cellule contient plusieurs
lignes
de texte, cela signifie que chaque ligne de texte est séparée de la suivante par le caractère "Line Feed" : chr(10) ou ALT
Entrée).
Je sélectionne la matrice intersection de la colonne singulière et des rows que je souhaite considérer.
Je bute sur l'algorithme VBA permettant de scinder chaque row en autant de rows qu'il y a de lignes de texte.
Exemple :
A B C
1 renault essence break
diesel
2 citroen auto ABS
méca
3 peugeot clim vitres élec.
4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C
1 renault essence break
2 renault diesel break
3 citroen auto ABS
4 citroen méca ABS
5 peugeot clim vitres élec.
6 ford 3 portes airbag
Waw ! Plus simple que les directions que j'avais prises. Merci .
Et pour ceux (excel 97) qui n'ont pas la fonction Split (trouvée sur le ouèbe) :
Function Split(sString As String, sSep As String) As Variant
Dim aRet() As String Dim iI As Integer Dim iLen As Integer Dim sBuff As String Dim sChar As String
ReDim aRet(0) iLen = Len(sString) sBuff = ""
For iI = 1 To iLen sChar = Mid$(sString, iI, 1) If sChar = sSep Then aRet(UBound(aRet)) = sBuff sBuff = "" ReDim Preserve aRet(UBound(aRet) + 1) ElseIf iI = iLen Then sBuff = sBuff & sChar aRet(UBound(aRet)) = sBuff Else sBuff = sBuff & sChar End If Next iI Split = aRet End Function
"JB" a écrit dans le message de news: Bonjour,
ligne = 1 For Each c In Range([B1], [B65000].End(xlUp)) a = Split(c.Value, Chr(10)) For i = 0 To UBound(a) Sheets(2).Cells(ligne, 1) = c.Offset(0, -1) Sheets(2).Cells(ligne, 2) = a(i) Sheets(2).Cells(ligne, 3) = c.Offset(0, 1) ligne = ligne + 1 Next i Next c
http://cjoint.com/?kghRPY8zX8
JB http://boisgontierjacques.free.fr
On 5 oct, 21:40, "Quetzalcoatl" wrote:
Bonsoir,
Soit, dans un onglet EXCEL, une zone de cellules contenant du texte. Pour toutes les colonnes sauf une, chaque cellule contient une ligne de texte. Pour la colonne singulière, chaque cellule contient une ou plusieurs lignes de texte. (Lorsqu'une cellule contient plusieurs lignes de texte, cela signifie que chaque ligne de texte est séparée de la suivante par le caractère "Line Feed" : chr(10) ou ALT Entrée).
Je sélectionne la matrice intersection de la colonne singulière et des rows que je souhaite considérer. Je bute sur l'algorithme VBA permettant de scinder chaque row en autant de rows qu'il y a de lignes de texte.
Exemple :
A B C 1 renault essence break diesel 2 citroen auto ABS méca 3 peugeot clim vitres élec. 4 ford 3 portes airbag
avec matrice B1:B3 sélectionnée, deviendrait :
A B C 1 renault essence break 2 renault diesel break 3 citroen auto ABS 4 citroen méca ABS 5 peugeot clim vitres élec. 6 ford 3 portes airbag
Merci d'avance pour toute aide. Cordialement.
Quetzalcoatl
Merci. Ca fonctionne, moyennant une petite adaptation pour recopier toutes les cellules qui ne comportent qu'une ligne de texte.
"Pounet95" a écrit dans le message de news: 47071bcc$0$5099$
Bonjour,
Peut-être avec ceci à adapter en fonction des cellules de la plage sélectionnée [...]
Merci.
Ca fonctionne, moyennant une petite adaptation pour recopier toutes les cellules qui ne comportent qu'une ligne de texte.
"Pounet95" <grumlardold@wanadoo.fr> a écrit dans le message de news: 47071bcc$0$5099$ba4acef3@news.orange.fr...
Bonjour,
Peut-être avec ceci à adapter en fonction des cellules de la plage sélectionnée
[...]