Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Structuration données par colonnes

8 réponses
Avatar
Sylvain P.
Bonjour =E0 tous,

J'ai un fichier comprenant plus de 2000 lignes avec des infos
identiques mais qui ne sont pas rang=E9es par colonnes.
Ligne1 Paul 2 Jaques 7 Denis 4 Nicole 11
Ligne2 Jaques 5 Denis 4
Ligne3 Paul 8 Jaques 5 Nicole 3

J'aimerais aligner une info par colonne :
Ligne1 Paul 2 Jaques 7 Denis 4 Nicole 11
Ligne2 Jaques 5 Denis 4
Ligne3 Paul 8 Jaques 5 Nicole 3

=E7a marche par couple de cellule : devant chaque nombre, j'ai un
indicateur (17 au total).

Pour l'instant, j'ai essay=E9 avec des codes :

If Range("T" & ActiveCell.Row).Value =3D "Paul" Then
Selection.Resize(Selection.Rows.Count, Selection.Columns.Count +
2).Select
Selection.Cut
Range("AA" & ActiveCell.Row).Select
ActiveSheet.Paste
End If

Mais ce n'est pas tr=E8s efficient.
Une id=E9e ? Une suggestion ?

Merci par avance.

A+

8 réponses

Avatar
isabelle
bonjour Sylvain,

je ne suis pas sur d'avoir compris,
as-tu essayé avec Données, Convertir

isabelle
------------------------------------------------------------------

Le 2011-03-24 11:53, Sylvain P. a écrit :
Bonjour à tous,

J'ai un fichier comprenant plus de 2000 lignes avec des infos
identiques mais qui ne sont pas rangées par colonnes.
Ligne1 Paul 2 Jaques 7 Denis 4 Nicole 11
Ligne2 Jaques 5 Denis 4
Ligne3 Paul 8 Jaques 5 Nicole 3

J'aimerais aligner une info par colonne :
Ligne1 Paul 2 Jaques 7 Denis 4 Nicole 11
Ligne2 Jaques 5 Denis 4
Ligne3 Paul 8 Jaques 5 Nicole 3

ça marche par couple de cellule : devant chaque nombre, j'ai un
indicateur (17 au total).

Pour l'instant, j'ai essayé avec des codes :

If Range("T"& ActiveCell.Row).Value = "Paul" Then
Selection.Resize(Selection.Rows.Count, Selection.Columns.Count +
2).Select
Selection.Cut
Range("AA"& ActiveCell.Row).Select
ActiveSheet.Paste
End If

Mais ce n'est pas très efficient.
Une idée ? Une suggestion ?

Merci par avance.

A+

Avatar
Sylvain P.
Bonjour Isabelle,

Les données sont bien dans des colonnes différentes mais jamais dans
les colonnes.
Par exemple, les données relatives à Paul peuvent être en colonne D e n
ligne 1 et en colonne E en ligne 2.
J'aimerais qu'elles soient systématiquement en colonne D.

J'espère être plus clair :!

A+
Avatar
Jean-Claude
Bonjour,

peut-être simplement par une formule :
- à droite de vos données, créer un tableau avec en en-tête le nom des 17
personnes possibles,
- dans la 1ère cellule de cette zone, la formule :
=SI(ESTNA(EQUIV(J$1;$A2:$H2;0));"";INDEX($A2:$H2;1;EQUIV(J$1;$A2:$H2;0)+1))
- à recopier dans les zones de ce tableau.

Cf. http://cjoint.com/?1dyrWhKjnKj
à partir des données de votre exemple.

Une fois le tableau résultat créé, il suffit d'un copier/coller
spécial/valeur pour le fixer.

Cordialement,
Jean-Claude
Avatar
isabelle
le nom et le chiffre associé sont-ils dans la même cellule ?

isabelle
------------------------------------------------------------------

Le 2011-03-24 12:17, Sylvain P. a écrit :
Bonjour Isabelle,

Les données sont bien dans des colonnes différentes mais jamais dans
les colonnes.
Par exemple, les données relatives à Paul peuvent être en colonne D en
ligne 1 et en colonne E en ligne 2.
J'aimerais qu'elles soient systématiquement en colonne D.

J'espère être plus clair :!

A+

Avatar
isabelle
si le nom et le chiffre ont chacun leur cellule,

Sub Macro1()
Dim LesNom(), plg As Range, c As Range, x As Integer, col As Integer
Set plg = Sheets("Feuil1").Range("A1:H3") '<-----adapter l'adresse de
la plage
ReDim Preserve LesNom(x)
LesNom(x) = plg.Item(1)

For Each c In plg
If Application.IsText(c) Then
If IsError(Application.Match(c, LesNom, 0)) Then
ReDim Preserve LesNom(x)
LesNom(x) = c
x = x + 2
End If
End If
Next

For Each c In plg
If Application.IsText(c) Then
col = Application.Match(c, LesNom, 0) + 1
Sheets("Feuil2").Cells(c.Row, col) = c '<-----résultat en Feuil2
Sheets("Feuil2").Cells(c.Row, col + 1) = c.Offset(0, 1)
'<-----résultat en Feuil2
End If
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-24 16:41, isabelle a écrit :
le nom et le chiffre associé sont-ils dans la même cellule ?

isabelle
------------------------------------------------------------------

Le 2011-03-24 12:17, Sylvain P. a écrit :
Bonjour Isabelle,

Les données sont bien dans des colonnes différentes mais jamais dans
les colonnes.
Par exemple, les données relatives à Paul peuvent être en colonne D en
ligne 1 et en colonne E en ligne 2.
J'aimerais qu'elles soient systématiquement en colonne D.

J'espère être plus clair :!

A+
Avatar
isabelle
soit le nom et le chiffre associé ne sont pas dans la même cellule

Sub Macro1()
Dim LesNom(), plg As Range, c As Range, x As Integer, col As Integer
Set plg = Sheets("Feuil1").Range("A1:H3") '<-----adapter l'adresse de
la plage
ReDim Preserve LesNom(x)
LesNom(x) = ""

For Each c In plg
If Application.IsText(c) Then
If IsError(Application.Match(c, LesNom, 0)) Then
ReDim Preserve LesNom(x)
LesNom(x) = c
x = x + 2
End If
col = Application.Match(c, LesNom, 0)
Sheets("Feuil2").Cells(c.Row, col) = c '<-----résultat en Feuil2
Sheets("Feuil2").Cells(c.Row, col + 1) = c.Offset(0, 1)
'<-----résultat en Feuil2
End If
Next
End Sub

ou bien le nom et le chiffre associé sont dans la même cellule

Sub Macro2()
Dim LesNom(), plg As Range, c As Range, x As Integer, col As Integer, n
Set plg = Sheets("Feuil3").Range("A1:D3") '<-----adapter l'adresse de
la plage
n = Split(plg.Item(1), " ")
ReDim Preserve LesNom(x)
LesNom(x) = n(0)

For Each c In plg
If Not c = Empty Then
n = Split(c, " ")
If IsError(Application.Match(n(0), LesNom, 0)) Then
x = x + 1
ReDim Preserve LesNom(x)
LesNom(x) = n(0)
End If
col = Application.Match(n(0), LesNom, 0)
Sheets("Feuil4").Cells(c.Row, col) = n(0) & " " & n(1)
'<-----résultat en Feuil4
End If
Next

End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-24 16:41, isabelle a écrit :
le nom et le chiffre associé sont-ils dans la même cellule ?

isabelle
------------------------------------------------------------------

Le 2011-03-24 12:17, Sylvain P. a écrit :
Bonjour Isabelle,

Les données sont bien dans des colonnes différentes mais jamais dans
les colonnes.
Par exemple, les données relatives à Paul peuvent être en colonne D en
ligne 1 et en colonne E en ligne 2.
J'aimerais qu'elles soient systématiquement en colonne D.

J'espère être plus clair :!

A+
Avatar
isabelle
soit le nom et le chiffre associé ne sont pas dans la même cellule

Sub Macro1()
Dim LesNom(), plg As Range, c As Range, x As Integer, col As Integer
Set plg = Sheets("Feuil1").Range("A1:H3") '<-----adapter l'adresse de
la plage
ReDim Preserve LesNom(x)
For Each c In plg
If Application.IsText(c) Then
If IsError(Application.Match(c, LesNom, 0)) Then
ReDim Preserve LesNom(x)
LesNom(x) = c
x = x + 2
End If
col = Application.Match(c, LesNom, 0)
Sheets("Feuil2").Cells(c.Row, col) = c
'<-----résultat en Feuil2
Sheets("Feuil2").Cells(c.Row, col + 1) = c.Offset(0, 1)
'<-----résultat en Feuil2
End If
Next
End Sub

ou bien le nom et le chiffre associé sont dans la même cellule

Sub Macro2()
Dim LesNom(), plg As Range, c As Range, x As Integer, col As Integer, n
Set plg = Sheets("Feuil3").Range("A1:D3") '<-----adapter l'adresse de
la plage
n = Split(plg.Item(1), " ")
ReDim Preserve LesNom(x)
For Each c In plg
If Not c = Empty Then
n = Split(c, " ")
If IsError(Application.Match(n(0), LesNom, 0)) Then
ReDim Preserve LesNom(x)
LesNom(x) = n(0)
x = x + 1
End If
col = Application.Match(n(0), LesNom, 0)
Sheets("Feuil4").Cells(c.Row, col) = n(0) & " " & n(1)
'<-----résultat en Feuil4
End If
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-03-24 16:41, isabelle a écrit :
le nom et le chiffre associé sont-ils dans la même cellule ?

isabelle
------------------------------------------------------------------

Le 2011-03-24 12:17, Sylvain P. a écrit :
Bonjour Isabelle,

Les données sont bien dans des colonnes différentes mais jamais dans
les colonnes.
Par exemple, les données relatives à Paul peuvent être en colonne D en
ligne 1 et en colonne E en ligne 2.
J'aimerais qu'elles soient systématiquement en colonne D.

J'espère être plus clair :!

A+
Avatar
isabelle
ps/
Merci au Webmaster de suprimer mes messages en trop (4 avec celui-ci)
sur ce fil

isabelle