Macro pour tableau

fyftyone -  
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour,

Voilà, j'ai un petit soucis de macro sous excel.
Premièrement, je n'y connais rien en vb. :)

Alors j'ai un tableau avec des valeurs.

Ce que je souhaiterais, c'est transformer ce tableau en 3 colonnes.

Les colonnes sont mes positions en x, mes lignes mes valeurs en y et les valeurs de la cellule sont mes valeurs en Z.

Ce que je souhaiterais, c'est donc faire trois colonnes : x y z.

Autrement dit, si ma valeur de la cellule C5 est 36, je souhaiterais que mon nouveau tableau indique 3 5 36.

Est-ce compréhensible? (Sachant que mon tableau fait environ 768 colonnes sur 800 lignes :))

Merci d'avance.

Pour infos, je suis sous excel 2007

Kévin.

1 réponse

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour

    voici le code, à recopier dans un module

    j'ai supposé que les données commençaient en cellule A1
    le résultat s'affiche dans la feuille 2
    la durée de traitement est de l'ordre de 1mn 15 s sur mon PC

    Sub Transformer()
        Application.ScreenUpdating = False
        Deb = Timer
        Range("A1").Select
        DerCol = ActiveCell.End(xlToRight).Column
        DerLig = ActiveCell.End(xlDown).Row
        
        ReDim Valeur(DerLig * DerCol) As String
        ReDim Lig(DerLig * DerCol) As String
        ReDim Col(DerLig * DerCol) As String
        
        x = 0
        For j = 1 To DerLig
            For i = 1 To DerCol
                x = x + 1
                Valeur(x) = Cells(j, i)
                Col(x) = i
                Lig(x) = j
            Next i
        Next j
        
        Sheets("Feuil2").Select
        Cells(1, 1) = "Colonnes"
        Cells(1, 2) = "Lignes"
        Cells(1, 3) = "Valeurs"
        Range("A2").Select
        For i = 1 To x
            Cells(i + 1, 1) = Col(i)
            Cells(i + 1, 2) = Lig(i)
            Cells(i + 1, 3) = Valeur(i)
        Next i
        MsgBox "Durée " & Timer - Deb & " secondes"
    End Sub


    bonne réception

    cdlt
    0