Convertir une matrice - EXcel 2007 -vba

imhotep_9 Messages postés 2 Statut Membre -  
 imhotep_9 -
Bonjour,

En Excel 2007, je souhaite convertir une matrice dont la forme est:

F1 A
F1 B
F1 C
F1 D
F2 E
F2 F
... ...

en une nouvelle matrice dont la forme est:

F1 A;B;C;D
F2 E;F

... ...

Il me faudrait un code vba que je puisse adapter à toute matrice de ce type.

Merci bcp pour votre aide

1 réponse

  1. Bruce Willix Messages postés 12376 Date d'inscription   Statut Contributeur Dernière intervention   2 638
     
    Il faut pas de code VBA. Il faut transposer ta matrice.

    Et ça tombe bien, Excel possède une telle fonction: TRANSPOSE()

    Donc si tu as une matrice:

    A1 B1
    A2 B2

    et que tu appliques la formule =TRANSPOSE(A1:B2) la matrice résultante sera:

    A1 A2
    B1 B2

    C'est une formule matricielle. Quand tu l'appliques, tu dois appuer sue MAJ et CTRL en appuyant sur ENTREE pour que ça fonctionne.

    Tu dois aussi faire attention: si ta matrice d'entrée est de dimension (AxB) la zone dans laquelle tu vas écrire la matrice transposée doit être de dimension (BxA)...

    en clair la transposition d'un matrice

    A1 A2 A3
    B1 B2 B3

    donnera

    A1 B1
    A2 B2
    A3 B3

    Si Dieu était un méchant, ce serait moi (Mr. Benedict)
    0
    1. imhotep_9 Messages postés 2 Statut Membre
       
      malheureusement cette fonction ne répond pas à ma problématique...
      Je pense vraiement que cela nécessite du code vba.

      Ma matrice de départ est la suivante (A2:B6) :

      cellule A2 = Item1; cellule B2 = itemA
      cellule A3 = Item1; cellule B3 = itemB
      cellule A4 = Item1; cellule B4 = itemC
      cellule A5 = Item2; cellule B5 = itemD
      cellule A6 = Item2; cellule B6 = itemE
      ....


      Le résultat que je doit obtenir est:
      cellule A2 = Item1; cellule B2 = itemA, itemB, itemC
      cellule A3 = Item2; cellule B3 = itemD, itemE
      ....

      Merci d'avance.
      0
    2. Bruce Willix Messages postés 12376 Date d'inscription   Statut Contributeur Dernière intervention   2 638
       
      Alors tu dois faire un tableau croisé dynamique (en anglais: Pivot Table) :) Tu sais comment ça marche ?
      0
    3. imhotep_9
       
      oui merci
      0