Excel 2003 - transformer matrice en lignes

Bonjour à tous !

Ci dessous mon pb qui me semble insurmontable

Dans le fichier joint, il y a une matrice de cotation d'items (en lignes) selon des critères (en colonnes). Une note (chiffre) se trouve à l'intersection de la ligne avec la colonne.

Ce que je voudrais faire : transformer cette matrice en lignes selon le format suivant :

colonne1 - colonne2 - colonne 3

item - critère - note uniquement si la note existe !

Voilà, je vous remercie de votre aide !

ADK

216matrice.zip (7.29 Ko)

Bonsoir ADK,

Ce n'est pas insurmontable ! Voici une petite macro qui fait le travail (copie les données dans une autre feuille (Feuil2) à partir de la cellule A2. (on suppose que Ligne 1 contient les titres, Item, Critères, Notes.

Sub MatriceEnLigne()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim rg1 As Range, rg2 As Range
Dim i As Integer, j As Integer

Application.ScreenUpdating = False

Set ws1 = Sheets("Feuil1")
Set ws2 = Sheets("Feuil2")  'feuille destination

Set rg1 = ws1.Range("D4")   '1er item
Set rg2 = ws2.Range("A2")   '1re ligne destination

j = 0
Do Until rg1.Offset(j, 0).Row = 77      'on exécute jusqu'à la dernière ligne de la matrice

    For i = 2 To 8          'les critères sont de la colonne F à L
        If rg1.Offset(j, i) <> "" Then  's'il y a une note
            rg2 = rg1.Offset(j, 0)                             'l'item
            rg2.Offset(0, 1) = rg1.Offset(-2, i)    'la ligne titre avec les critères est à la ligne 2
            rg2.Offset(0, 2) = rg1.Offset(j, i)     'la note

            Set rg2 = rg2.Offset(1, 0)  'décale de 1 ligne pour prochain item
        End If
    Next i
    j = j + 1       'prochaine ligne

Loop

Application.ScreenUpdating = True

End Sub

A+

ouahou, c'est excellent ça marche !

Merci, tu n'usurpes pas ton id, grand chaman !

Rechercher des sujets similaires à "2003 transformer matrice lignes"