[EXCEL] Transposition sélective ?

Résolu/Fermé
Nico - 7 nov. 2012 à 15:42
 Nico - 8 nov. 2012 à 10:09
Bonjour,

Je cherche à transposer les éléments d'un listing en colonne, mais sous une condition.
Je m'explique (c'est mieux) :
j'ai pour l'instant un listing de commandes qui me donne :

personne1 | Produit a
personne1 | Produit b

personne2 | Produit e
personne2 | Produit b
personne2 | Produit f

personne3 | Produit c
personne3 | Produit a

etc, etc.

Bon.
La question est : comment fais-je pour transposer ma liste de produits en ligne pour chaque personne, sans avoir à le faire a mano ? (le collage spécial c'est bien gentil mais au bout de 1000 clients je risque de vouloir brûler mon pc. Avec du feu.)

Merci pour votre aide.
A voir également:

3 réponses

Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 587
7 nov. 2012 à 15:45
Tu regardes la colonne que tu veux transposer. Si elle fait 1xN de dimension, tu sélectionnes un ligne qui fait Nx1. dans la permière case, tu écris =TRANSPOSE(A1:A10) (tu adaptes la zone, hein :D) et tu valides en faisant CTRL+SHIFT+ENTER...
0
Merci Bruce Willix !

Mais c'est toujours pas ça... ton opération m'évite de sélectionner / copier / "coller spécialement", mais n'automatise pas la sélection.

Il me faudrait (dans l'idéal) une formule (ou une macro, mais vu mon niveau proche du néant en programmation, c'est pas gagné) qui me permette de faire =transpose(B:B) si(A3=A2)

(grosso-modo, qu'il me fasse un listing en ligne des produits qui sont actuellement en colonne, si c'est le même client qui a commandé)

Je sais pas si je suis bien clair.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 7/11/2012 à 16:04
Bonjour,

un pb presque similaire auquel j'ai répondu ici.
Regarde si ça te va et si tu arrives à adapter.

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 587
7 nov. 2012 à 16:10
Joli, j'avoue :D
0
Merci eriic,

Bon, je suis vraiment une bille en programmation. J'ai essayé de comprendre ton code et de l'adapter mais rien à faire, je me casse les dents dessus.
Faudrait que je me penche plus longuement sur la question mais pas le temps pour le moment.

Donc quand on a pas la tête, on a les jambes...
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
7 nov. 2012 à 16:49
Je veux bien adapter mais faudrait préciser comment tu veux la réponse.
Dans une nouvelle feuille ?
Tout dans une cellule ou chaque produit séparé ?
Chaque produit a sa propre colonne ?
etc

Déposer le fichier xls exemple (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric
0
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 587
7 nov. 2012 à 17:05
Contournement du problème avec une matrice de test:

1. Il faut que ta liste commence en ligne 2 et idéalement qu'il n'y ait pas d'espace entre les clients (ça marche aussi avec, mais c'est moins joli)

2. Sur la ligne 1, tu mets tous les noms de tes clients, à partir de la colonne C

3. A la seconde ligne, en colonne C (qui est donc la case supérieure gauche de ta matrice de test), tu écris un test comme ça =SI(C$1=$A2;$B2;"")
=> La matrice affiche des 1 quand le nom en haut de la colonne=le nom du client. Dans ton cas tu devrais donc avoir une matrice

4. Sur une autre feuille, ou plus bas, tu transposes. Si la matrice est dans la zone C1:E8 (donc 8x3) tu sélectionnes une zone qui fait 3x8 et dedans tu écris =TRANSPOSE (C1:E8) et tu valides avec CTRL+SHIFT+ENTREE

5. Voilà presque ce que tu veux. Reste juste à ramener les chiffres tout à gauche - je te laisse faire ça :)
0
OK merci pour vos propositions...

Du coup j'ai bidouillé une formule en partant de la base de Bruce willix :

Mon listing de codes clients en colonne A
Mon listing de produits en colonne B

En colonne C, la formule =SI(A2=A1;B2;"0")
En colonne D, la formule (ça devient plus compliqué...) : =SI(C1=0;0;SI($A2=$A1;SI(C1=B2;C2);0))

..que je fais glisser sur mes colonnes suivantes en fonction du nombre de produits que je souhaite voir afficher, et que je fais ensuite glisser sur toutes mes lignes.

Un copier/coller en valeurs dans une feuille vierge + -->données/supprimer les doublons pour les codes clients, et :

Tadaaaam.

J'ai plus qu'à recoller les morceaux avec mon fichier d'origine (et à virer les "0", mais j'aurais pu m'en passer à l'origine en faisant la formule).

Merci messieurs !
0