transposition du contenu d'une cellule sur plusieurs, le retour...
2 réponses
tinou
bonjour, l'idee a deja ete posee en mai dernier
(http://www.microsoft.com/office/community/fr-fr/default.mspx?dg=microsoft.public.fr.excel&tid=4c20bb95-d3e8-45a6-9370-1272512b575a&cat=fr-fr-produitsbureautiques&lang=fr&cr=FR&sloc=fr-fr&m=1&p=1)
le principe est le meme : j'ai dans une cellule plusieurs lignes generees
par des retours chariot ou des sauts de ligne (chr 10 / chr 13 ??)
et j'aimerai que chaque ligne se recopie dans la cellule d'a cote (sauf la
1re ligne)
petit schema... :
A B C D
E F
+-------+----------+---------+------------------+--------+------------+
1 |CIV |NOM |PRENOM|AD 1 |CP |VILLE
|
+-------+----------+---------+------------------+--------+------------+
2 |Mlle |DUPONT |CATY |9 RUE TUC |75001 |PARIS |
+-------+----------+---------+------------------+--------+------------+
|M. |DERICK |JEAN |5 BD TOTO |38000 |GRENOBLE |
3 | | | |ETAGE 11 |
| |
| | | |BAT. F
| | |
+-------+----------+---------+------------------+--------+------------+
| |SERVICE | |BP 14 |13001
|MARSEILLE|
4 | |INFO | |
| | |
+-------+----------+---------+------------------+--------+------------+
etc...
bref on peut donc observer qu'a la ligne 3, dans la colonne D "ad 1",
il y a 3 (sauts de) lignes. Il y en a aussi a la ligne 4, colonne B "nom".
j'aimerai une macro qui me demande sur quelle colonne travailler (inputbox),
et si, par exemple, je reponds "D", elle m'insere autant de colonne qu'il y
a de saut de ligne, (ici, 2 colonnes a droite de D), pour coller "ETAGE 11"
dans E3 et "BAT. F" dans F3... bien sur tous les "CP" se retrouveront en G et
"VILLE" en H...!
on aurait donc :
A B C D E
F G H
+----+---------+------+------------+----------+-------+-------+-----------+
1 |CIV|NOM |PREN |AD1 |AD2 |AD3 |CP
|VILLE |
+----+---------+------+------------+----------+-------+-------+-----------+
2 |Mlle|DUPONT|CATY |9 RUE TUC | | |75001|PARIS
|
+----+---------+------+------------+----------+-------+--------------------+
3 |M. |DERICK |JEAN |5 BD TOTO |ETAGE 11| BAT. F|38000|GRENOBLE |
voila j'espere avoir été claire...
Merci par avance...
Tinou
Ps : je remets les codes pris du mois de mai...
merci clement
sub entroiscellules()
derniereligne = range("a65536").end(xlup).row
for i = 1 to derniereligne
lacellule = cells(i,1).value
lavaleur = split(lacellule, chr(10))
for z = 0 to ubound(lavaleur)
cells(i,z+2).value = lavaleur(z)
next
next
end sub
Tu copies ceci dans un module standard et tu adaptes le nom de la feuille et la colonne où sont tes données.
'------------------------------ Sub test()
Dim Rg As Range, C As Range
With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("a65536").End(xlUp).Row) _ .SpecialCells(xlCellTypeConstants) End With Application.ScreenUpdating = False For Each C In Rg t = Split(C, Chr(10)) If TypeName(t) <> "String" Then For a = 1 To UBound(t) C.Offset(, a) = t(a) C.Replace t(a), "" C.Replace Chr(10), "" Next End If Next
End Sub '------------------------------
Salutations!
"tinou" a écrit dans le message de news: bonjour, l'idee a deja ete posee en mai dernier (http://www.microsoft.com/office/community/fr-fr/default.mspx?dg=microsoft.public.fr.excel&tidL20bb95-d3e8-45a6-9370-1272512b575a&cat=fr-fr-produitsbureautiques&lang=fr&cr=FR&sloc=fr-fr&m=1&p=1)
le principe est le meme : j'ai dans une cellule plusieurs lignes generees par des retours chariot ou des sauts de ligne (chr 10 / chr 13 ??) et j'aimerai que chaque ligne se recopie dans la cellule d'a cote (sauf la 1re ligne)
petit schema... :
A B C D E F +-------+----------+---------+------------------+--------+------------+ 1 |CIV |NOM |PRENOM|AD 1 |CP |VILLE | +-------+----------+---------+------------------+--------+------------+ 2 |Mlle |DUPONT |CATY |9 RUE TUC |75001 |PARIS | +-------+----------+---------+------------------+--------+------------+ |M. |DERICK |JEAN |5 BD TOTO |38000 |GRENOBLE | 3 | | | |ETAGE 11 | | | | | | |BAT. F | | | +-------+----------+---------+------------------+--------+------------+ | |SERVICE | |BP 14 |13001 |MARSEILLE| 4 | |INFO | | | | | +-------+----------+---------+------------------+--------+------------+
etc...
bref on peut donc observer qu'a la ligne 3, dans la colonne D "ad 1", il y a 3 (sauts de) lignes. Il y en a aussi a la ligne 4, colonne B "nom".
j'aimerai une macro qui me demande sur quelle colonne travailler (inputbox), et si, par exemple, je reponds "D", elle m'insere autant de colonne qu'il y a de saut de ligne, (ici, 2 colonnes a droite de D), pour coller "ETAGE 11" dans E3 et "BAT. F" dans F3... bien sur tous les "CP" se retrouveront en G et "VILLE" en H...!
on aurait donc :
A B C D E F G H +----+---------+------+------------+----------+-------+-------+-----------+ 1 |CIV|NOM |PREN |AD1 |AD2 |AD3 |CP |VILLE |
+----+---------+------+------------+----------+-------+-------+-----------+ 2 |Mlle|DUPONT|CATY |9 RUE TUC | | |75001|PARIS |
+----+---------+------+------------+----------+-------+--------------------+ 3 |M. |DERICK |JEAN |5 BD TOTO |ETAGE 11| BAT. F|38000|GRENOBLE |
voila j'espere avoir été claire... Merci par avance...
Tinou
Ps : je remets les codes pris du mois de mai... merci clement
sub entroiscellules() derniereligne = range("a65536").end(xlup).row for i = 1 to derniereligne lacellule = cells(i,1).value lavaleur = split(lacellule, chr(10)) for z = 0 to ubound(lavaleur) cells(i,z+2).value = lavaleur(z) next next end sub
Bonjour Tinou,
Essaie ceci :
Tu copies ceci dans un module standard et
tu adaptes le nom de la feuille et la colonne où
sont tes données.
'------------------------------
Sub test()
Dim Rg As Range, C As Range
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("a65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeConstants)
End With
Application.ScreenUpdating = False
For Each C In Rg
t = Split(C, Chr(10))
If TypeName(t) <> "String" Then
For a = 1 To UBound(t)
C.Offset(, a) = t(a)
C.Replace t(a), ""
C.Replace Chr(10), ""
Next
End If
Next
End Sub
'------------------------------
Salutations!
"tinou" <tinou@discussions.microsoft.com> a écrit dans le message de news: C2AEFD85-2323-4BEB-9E39-E2C02AA92B2D@microsoft.com...
bonjour, l'idee a deja ete posee en mai dernier
(http://www.microsoft.com/office/community/fr-fr/default.mspx?dg=microsoft.public.fr.excel&tidL20bb95-d3e8-45a6-9370-1272512b575a&cat=fr-fr-produitsbureautiques&lang=fr&cr=FR&sloc=fr-fr&m=1&p=1)
le principe est le meme : j'ai dans une cellule plusieurs lignes generees
par des retours chariot ou des sauts de ligne (chr 10 / chr 13 ??)
et j'aimerai que chaque ligne se recopie dans la cellule d'a cote (sauf la
1re ligne)
petit schema... :
A B C D
E F
+-------+----------+---------+------------------+--------+------------+
1 |CIV |NOM |PRENOM|AD 1 |CP |VILLE
|
+-------+----------+---------+------------------+--------+------------+
2 |Mlle |DUPONT |CATY |9 RUE TUC |75001 |PARIS |
+-------+----------+---------+------------------+--------+------------+
|M. |DERICK |JEAN |5 BD TOTO |38000 |GRENOBLE |
3 | | | |ETAGE 11 |
| |
| | | |BAT. F
| | |
+-------+----------+---------+------------------+--------+------------+
| |SERVICE | |BP 14 |13001
|MARSEILLE|
4 | |INFO | |
| | |
+-------+----------+---------+------------------+--------+------------+
etc...
bref on peut donc observer qu'a la ligne 3, dans la colonne D "ad 1",
il y a 3 (sauts de) lignes. Il y en a aussi a la ligne 4, colonne B "nom".
j'aimerai une macro qui me demande sur quelle colonne travailler (inputbox),
et si, par exemple, je reponds "D", elle m'insere autant de colonne qu'il y
a de saut de ligne, (ici, 2 colonnes a droite de D), pour coller "ETAGE 11"
dans E3 et "BAT. F" dans F3... bien sur tous les "CP" se retrouveront en G et
"VILLE" en H...!
on aurait donc :
A B C D E
F G H
+----+---------+------+------------+----------+-------+-------+-----------+
1 |CIV|NOM |PREN |AD1 |AD2 |AD3 |CP
|VILLE |
+----+---------+------+------------+----------+-------+-------+-----------+
2 |Mlle|DUPONT|CATY |9 RUE TUC | | |75001|PARIS
|
+----+---------+------+------------+----------+-------+--------------------+
3 |M. |DERICK |JEAN |5 BD TOTO |ETAGE 11| BAT. F|38000|GRENOBLE |
voila j'espere avoir été claire...
Merci par avance...
Tinou
Ps : je remets les codes pris du mois de mai...
merci clement
sub entroiscellules()
derniereligne = range("a65536").end(xlup).row
for i = 1 to derniereligne
lacellule = cells(i,1).value
lavaleur = split(lacellule, chr(10))
for z = 0 to ubound(lavaleur)
cells(i,z+2).value = lavaleur(z)
next
next
end sub
Tu copies ceci dans un module standard et tu adaptes le nom de la feuille et la colonne où sont tes données.
'------------------------------ Sub test()
Dim Rg As Range, C As Range
With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("a65536").End(xlUp).Row) _ .SpecialCells(xlCellTypeConstants) End With Application.ScreenUpdating = False For Each C In Rg t = Split(C, Chr(10)) If TypeName(t) <> "String" Then For a = 1 To UBound(t) C.Offset(, a) = t(a) C.Replace t(a), "" C.Replace Chr(10), "" Next End If Next
End Sub '------------------------------
Salutations!
"tinou" a écrit dans le message de news: bonjour, l'idee a deja ete posee en mai dernier (http://www.microsoft.com/office/community/fr-fr/default.mspx?dg=microsoft.public.fr.excel&tidL20bb95-d3e8-45a6-9370-1272512b575a&cat=fr-fr-produitsbureautiques&lang=fr&cr=FR&sloc=fr-fr&m=1&p=1)
le principe est le meme : j'ai dans une cellule plusieurs lignes generees par des retours chariot ou des sauts de ligne (chr 10 / chr 13 ??) et j'aimerai que chaque ligne se recopie dans la cellule d'a cote (sauf la 1re ligne)
petit schema... :
A B C D E F +-------+----------+---------+------------------+--------+------------+ 1 |CIV |NOM |PRENOM|AD 1 |CP |VILLE | +-------+----------+---------+------------------+--------+------------+ 2 |Mlle |DUPONT |CATY |9 RUE TUC |75001 |PARIS | +-------+----------+---------+------------------+--------+------------+ |M. |DERICK |JEAN |5 BD TOTO |38000 |GRENOBLE | 3 | | | |ETAGE 11 | | | | | | |BAT. F | | | +-------+----------+---------+------------------+--------+------------+ | |SERVICE | |BP 14 |13001 |MARSEILLE| 4 | |INFO | | | | | +-------+----------+---------+------------------+--------+------------+
etc...
bref on peut donc observer qu'a la ligne 3, dans la colonne D "ad 1", il y a 3 (sauts de) lignes. Il y en a aussi a la ligne 4, colonne B "nom".
j'aimerai une macro qui me demande sur quelle colonne travailler (inputbox), et si, par exemple, je reponds "D", elle m'insere autant de colonne qu'il y a de saut de ligne, (ici, 2 colonnes a droite de D), pour coller "ETAGE 11" dans E3 et "BAT. F" dans F3... bien sur tous les "CP" se retrouveront en G et "VILLE" en H...!
on aurait donc :
A B C D E F G H +----+---------+------+------------+----------+-------+-------+-----------+ 1 |CIV|NOM |PREN |AD1 |AD2 |AD3 |CP |VILLE |
+----+---------+------+------------+----------+-------+-------+-----------+ 2 |Mlle|DUPONT|CATY |9 RUE TUC | | |75001|PARIS |
+----+---------+------+------------+----------+-------+--------------------+ 3 |M. |DERICK |JEAN |5 BD TOTO |ETAGE 11| BAT. F|38000|GRENOBLE |
voila j'espere avoir été claire... Merci par avance...
Tinou
Ps : je remets les codes pris du mois de mai... merci clement
sub entroiscellules() derniereligne = range("a65536").end(xlup).row for i = 1 to derniereligne lacellule = cells(i,1).value lavaleur = split(lacellule, chr(10)) for z = 0 to ubound(lavaleur) cells(i,z+2).value = lavaleur(z) next next end sub