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

translater certaines colonnes en lignes ? pas si simple

5 réponses
Avatar
Jean-Claude
Bonjour,

plutot qu'un grand discours (que je ne saurais même pas comment formuler),
voici un petit exemple de mon problème :

Soit un tableau de la forme :

A B C D
1 classe zone jaune vert
2 aa 01 1 5
3 bb 02 2 6
4 cc 03 3 7
5 dd 04 4 8

Comment puis-je faire pour obtenir le tableau suivant :

A B C D
1 classe zone coul. valeur
2 aa 01 jaune 1
3 aa 01 vert 5
4 bb 02 jaune 2
5 bb 02 vert 6
6 cc 03 jaune 3
7 cc 03 vert 7
8 dd 04 jaune 4
9 dd 04 vert 8

Avec des fonctions existantes de Excel, ou en VBA (même si je n'en suis pas
un expert).
J'ai de nombreux tableaux à traiter de la sorte, avec chacun jusqu'à 10
colonnes, et quelques dizaines de lignes (donc au final plusieurs centaines
par tableau!), et je ne veux pas me lancer dans quelques heures de laborieux
(et risqué en terme d'erreur) travail, s'il y a un autre moyen.
Merci d'avance de votre aide.

Jean-Claude

5 réponses

Avatar
JB
Bonsoir,

Sub essai()
ligne = 2
colonne = 7
For Each c In Range([A2], [a65000].End(xlUp))
Cells(ligne, colonne) = c
Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
Cells(ligne, colonne).Offset(0, 2) = "jaune"
Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, 2)
ligne = ligne + 1
Cells(ligne, colonne) = c
Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
Cells(ligne, colonne).Offset(0, 2) = "vert"
Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, 3)
ligne = ligne + 1
Next c
End Sub

JB


On 21 fév, 18:45, "Jean-Claude" wrote:
Bonjour,

plutot qu'un grand discours (que je ne saurais même pas comment formule r),
voici un petit exemple de mon problème :

Soit un tableau de la forme :

A B C D
1 classe zone jaune vert
2 aa 01 1 5
3 bb 02 2 6
4 cc 03 3 7
5 dd 04 4 8

Comment puis-je faire pour obtenir le tableau suivant :

A B C D
1 classe zone coul. valeur
2 aa 01 jaune 1
3 aa 01 vert 5
4 bb 02 jaune 2
5 bb 02 vert 6
6 cc 03 jaune 3
7 cc 03 vert 7
8 dd 04 jaune 4
9 dd 04 vert 8

Avec des fonctions existantes de Excel, ou en VBA (même si je n'en suis pas
un expert).
J'ai de nombreux tableaux à traiter de la sorte, avec chacun jusqu'à 10
colonnes, et quelques dizaines de lignes (donc au final plusieurs centain es
par tableau!), et je ne veux pas me lancer dans quelques heures de labori eux
(et risqué en terme d'erreur) travail, s'il y a un autre moyen.
Merci d'avance de votre aide.

Jean-Claude


Avatar
JB
Résultat sur feuil2:

http://cjoint.com/?cvtq07OqxU

Sub essai2()
ligne = 2
colonne = 1
For Each c In Range([A2], [a65000].End(xlUp))
With Sheets(2)
.Cells(ligne, colonne) = c
.Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
.Cells(ligne, colonne).Offset(0, 2) = "jaune"
.Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, 2)
ligne = ligne + 1
.Cells(ligne, colonne) = c
.Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
.Cells(ligne, colonne).Offset(0, 2) = "vert"
.Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, 3)
ligne = ligne + 1
End With
Next c
End Sub

JB

On 21 fév, 19:09, "JB" wrote:
Bonsoir,

Sub essai()
ligne = 2
colonne = 7
For Each c In Range([A2], [a65000].End(xlUp))
Cells(ligne, colonne) = c
Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
Cells(ligne, colonne).Offset(0, 2) = "jaune"
Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, 2)
ligne = ligne + 1
Cells(ligne, colonne) = c
Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
Cells(ligne, colonne).Offset(0, 2) = "vert"
Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, 3)
ligne = ligne + 1
Next c
End Sub

JB

On 21 fév, 18:45, "Jean-Claude" wrote:



Bonjour,

plutot qu'un grand discours (que je ne saurais même pas comment formu ler),
voici un petit exemple de mon problème :

Soit un tableau de la forme :

A B C D
1 classe zone jaune vert
2 aa 01 1 5
3 bb 02 2 6
4 cc 03 3 7
5 dd 04 4 8

Comment puis-je faire pour obtenir le tableau suivant :

A B C D
1 classe zone coul. valeur
2 aa 01 jaune 1
3 aa 01 vert 5
4 bb 02 jaune 2
5 bb 02 vert 6
6 cc 03 jaune 3
7 cc 03 vert 7
8 dd 04 jaune 4
9 dd 04 vert 8

Avec des fonctions existantes de Excel, ou en VBA (même si je n'en su is pas
un expert).
J'ai de nombreux tableaux à traiter de la sorte, avec chacun jusqu' à 10
colonnes, et quelques dizaines de lignes (donc au final plusieurs centa ines
par tableau!), et je ne veux pas me lancer dans quelques heures de labo rieux
(et risqué en terme d'erreur) travail, s'il y a un autre moyen.
Merci d'avance de votre aide.

Jean-Claude- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
garnote
Salut Jean-Claude,

Tentative de généralisation à partir de la macro de JB.
Un exemple :
jaune vert bleu mauve rouge
aa 01 1 7 13 1 7
bb 02 2 8 14 2 6
cc 03 3 9 15 3 5
dd 04 4 10 16 4 3
ee 05 5 11 17 5 4
ff 06 2 2 2 6 7
gg 07 5 5 5 7 9


Sélectionne C1:G8 et appelle cette macro :

Sub essai3()
NC = Selection.Columns.Count
ligne = 2
colonne = 1
For Each c In Range([A2], [a65000].End(xlUp))
With Sheets(2)
For i = 1 To NC
.Cells(ligne, colonne) = c
.Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
.Cells(ligne, colonne).Offset(0, 2) = Cells(1, i + 2)
.Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, i + 1)
ligne = ligne + 1
Next i
End With
Next c
End Sub

Serge





"Jean-Claude" a écrit dans le message de news: 45dc853c$0$27381$
Bonjour,

plutot qu'un grand discours (que je ne saurais même pas comment formuler),
voici un petit exemple de mon problème :

Soit un tableau de la forme :

A B C D
1 classe zone jaune vert
2 aa 01 1 5
3 bb 02 2 6
4 cc 03 3 7
5 dd 04 4 8

Comment puis-je faire pour obtenir le tableau suivant :

A B C D
1 classe zone coul. valeur
2 aa 01 jaune 1
3 aa 01 vert 5
4 bb 02 jaune 2
5 bb 02 vert 6
6 cc 03 jaune 3
7 cc 03 vert 7
8 dd 04 jaune 4
9 dd 04 vert 8

Avec des fonctions existantes de Excel, ou en VBA (même si je n'en suis pas
un expert).
J'ai de nombreux tableaux à traiter de la sorte, avec chacun jusqu'à 10
colonnes, et quelques dizaines de lignes (donc au final plusieurs centaines
par tableau!), et je ne veux pas me lancer dans quelques heures de laborieux
(et risqué en terme d'erreur) travail, s'il y a un autre moyen.
Merci d'avance de votre aide.

Jean-Claude











Avatar
garnote
Mais comment fait-on pour transmettre un tableau
présentable ? Autre tentative :

A B C D E F G
jaune vert bleu mauve rouge
aa 01 1 7 13 1 7
bb 02 2 8 14 2 6
cc 03 3 9 15 3 5
dd 04 4 10 16 4 3
ee 05 5 11 17 5 4
ff 06 2 2 2 6 7
gg 07 5 5 5 7 9

Serge



"garnote" a écrit dans le message de news: e7MYX%
Salut Jean-Claude,

Tentative de généralisation à partir de la macro de JB.
Un exemple :
jaune vert bleu mauve rouge
aa 01 1 7 13 1 7
bb 02 2 8 14 2 6
cc 03 3 9 15 3 5
dd 04 4 10 16 4 3
ee 05 5 11 17 5 4
ff 06 2 2 2 6 7
gg 07 5 5 5 7 9


Sélectionne C1:G8 et appelle cette macro :

Sub essai3()
NC = Selection.Columns.Count
ligne = 2
colonne = 1
For Each c In Range([A2], [a65000].End(xlUp))
With Sheets(2)
For i = 1 To NC
.Cells(ligne, colonne) = c
.Cells(ligne, colonne).Offset(0, 1) = c.Offset(0, 1)
.Cells(ligne, colonne).Offset(0, 2) = Cells(1, i + 2)
.Cells(ligne, colonne).Offset(0, 3) = c.Offset(0, i + 1)
ligne = ligne + 1
Next i
End With
Next c
End Sub

Serge





"Jean-Claude" a écrit dans le message de news: 45dc853c$0$27381$
Bonjour,

plutot qu'un grand discours (que je ne saurais même pas comment formuler),
voici un petit exemple de mon problème :

Soit un tableau de la forme :

A B C D
1 classe zone jaune vert
2 aa 01 1 5
3 bb 02 2 6
4 cc 03 3 7
5 dd 04 4 8

Comment puis-je faire pour obtenir le tableau suivant :

A B C D
1 classe zone coul. valeur
2 aa 01 jaune 1
3 aa 01 vert 5
4 bb 02 jaune 2
5 bb 02 vert 6
6 cc 03 jaune 3
7 cc 03 vert 7
8 dd 04 jaune 4
9 dd 04 vert 8

Avec des fonctions existantes de Excel, ou en VBA (même si je n'en suis pas
un expert).
J'ai de nombreux tableaux à traiter de la sorte, avec chacun jusqu'à 10
colonnes, et quelques dizaines de lignes (donc au final plusieurs centaines
par tableau!), et je ne veux pas me lancer dans quelques heures de laborieux
(et risqué en terme d'erreur) travail, s'il y a un autre moyen.
Merci d'avance de votre aide.

Jean-Claude















Avatar
Jean-Claude









Merci pour vos réponses, ca fonctionne très bien (avec quelques adaptations
pour mes cas précis).

Jean-Claude