Aide pour transposition en colonne

Résolu
Raphael -  
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

J'aurais besoin de votre aide .
-
Voici mon tableau :
-
COLONNE A ---- COLONNE B
Patrick ---- foot
Patrick ---- basket
Patrick ---- tennis
Jean ---- foot
jean ---- hockey
Michel ---- Patinage
Michel ---- foot
-
et je voudrais le convertir dans le format suivant :
COLONNE A ---- B ---- C ---- D
Patrick ---- foot ---- basket ---- tennis
Jean ---- foot ---- hockey
Michel ---- patinage ---- foot

-
-
Comment feriez vous ? Une recherche V ?
Merci beaucoup pour votre aide
Raphael
-
-

A voir également:

4 réponses

Raymond PENTIER Messages postés 71833 Date d'inscription   Statut Contributeur Dernière intervention   17 381
 
Bonjour.

Combien de lignes environ : 10, 100, 1000 ?
Manipulation à réaliser une seule fois ou à refaire souvent ?
0
Raphael
 
Bonjour Raymond,

Il y a environ 1500 lignes dans le tableau initial, ce qui devrait donc le réduire à quelques centaines une fois "transformé".

C'est à priori une manipulation unique, je ne cherche pas à l'automatiser.
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 442
 
Bonjour
*voila un modèle à adapter qui pourra peut être vous convenir
revenez si besoin
https://www.cjoint.com/?CJhrFoJGXYC
Crdlmnt
0
Raphael
 
C'est top ! Exactement ce que je voulais, et parfaitement extensible.
Merci beaucoup pour votre aide (aussi rapide !) :)
-
Allez, si j'abuse un petit peu, pensez-vous pouvoir m'expliquer la construction de votre méthode, pour que j'apprenne en même temps ? Notamment la signification de Colonne, Index et Equiv de la formule en F2.

Quoi qu'il en soit, merci encore
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 442
 
Re

INDEX(Champ;ligne;colonne)
ressort la valeur du Champ située au croisement des N° de ligne et colonne du champ indiqués dans la suite du code

EQUIV(Valeur, champ colonne;0) ressort le N° de ligne dans le champ de la valeur cherchée

donc par exemple
=INDEX(A1:A100;EQUIV(X1;B1:B100;0))

va ressortir la valeur de A au N° de ligne où se trouve la valeur X1 dans le champ B1:B100.( Dans ce cas le N° de colonne n'est pas indiqué puisque le champ INDEX n'en a qu'une)

COLONNE() renvoie le N° de colonne ou se trouve le code (par exemple renvoie 6 en colonne F et donc colonne -5 en F renvoie 1)
Fonctionne aussi dans l'autre sens avec LIGNE()

Le principe est donc d'une part de coder en incrémentant le nom du nombre de fois où il se trouve dans la colonne noms et de renvoyer les infos de B en recomposant le nom cherché + le N° de 1 à xxx x selon le nombre de valeurs à ressortir.

A noter que cette solution n'exige pas que le champ de données soit classé

Espérant avoir été clair, mais via une messagerie ce n'est pas toujours facile.

crdlmnt
0
Raphael
 
C'est top, merci encore pour votre aide !
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 442
 
Bonne route, je passe le sujet en résolu
0
Raymond PENTIER Messages postés 71833 Date d'inscription   Statut Contributeur Dernière intervention   17 381
 
Il y a certainement des formules très élaborées, avec des EQUIV, DECALER, INDEX, COLONNE, LIGNE, ADRESSE.
En attendant, voici une méthode manuelle très basique :
1) Vérifier que la colonne A est triée (et que l'orthographe est régulière : éviter Marie-Line, Marie Line et Maryline par exemple pour désigner la même personne).
2) Sélectionner B1:B3 ; faire Copier ; aller dans C1 et faire Collage spécial /Transposer.
3) Recommencer avec B4: B5 transposées en C4, et ainsi de suite.
4) Trier le tableau en se plaçant dans la colonne C : supprimer les lignes dont les cellules en C sont vides (elles sont rassemblées en deuxième partie du tableau).
5) Supprimer la colonne B.
0
Raphael
 
J'avais connaissance de cet usage, mais je le trouvais fastidieux. Je n'aime pas trop les opération manuelles quand une fonction peut faire l'affaire. Même si il est vrai que le temps pour l'obtenir a peut-être été plus long que le copier/coller ;)
0