Macro pour tableau
fyftyone
-
Frenchie83 Messages postés 2254 Statut Membre -
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.
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
-
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