Transposer des données en colonne en lignes selon condition

stsym

XLDnaute Nouveau
Bonjour,

J'ai utilisé le moteur de recherche du forum et ai trouvé un fichier et un code
qui correspond parfaitement à ma demande.
En effet je souhaite transposer des données présentes sous format colonnes et format lignes et créer une colonne
correspondant à celle de l'entête.

Post : Efgé du 26/07/2011

Dans mon tableau j'ai des donneés dont les valeurs sont saisies en rouge et je souhaite transposer en lignes que ces dernières.
Cela est-il possible ?

Si cela l'est ma demande devient plus compliquée.
Dans ce tableau j'ai des données saisies en rouge et d'autres en vert.
Est-il possible de transposer dans un onglet les données rouge et dans un autre celles en vert.

D'avance merci pour votre aide
StSym

Private Sub CommandButton1_Click()
Dim Tablo(), Col&, Rw&, i&, j&, k&
With Sheets("Feuil1")
Col = .Cells(1, Columns.Count).End(xlToLeft).Column - 1
Rw = .Cells(Rows.Count, 1).End(xlUp).Row
ReDim Tablo(1 To (Rw * Col) + 1, 1 To 3)
For i = 2 To Rw
For j = 2 To Col + 1
k = k + 1
Tablo(k, 1) = .Cells(i, 1)
Tablo(k, 2) = .Cells(1, j)
Tablo(k, 3) = .Cells(i, j)
Next j
Next i
End With
Cells(2, 1).Resize(UBound(Tablo, 1), 3) = Tablo
End Sub
 

bbb38

XLDnaute Accro
Re : Transposer des données en colonne en lignes selon condition

Bonsoir stsym, le forum,
Je pense que si tu joins un petit fichier d’exemple (quelques lignes, sans données confidentielles), tu auras plus de chance d’obtenir de l’aide.
Cordialement,
Bernard
 

TempusFugit

XLDnaute Impliqué
Re : Transposer des données en colonne en lignes selon condition

Bonjour


Remplaces ta macro existante par celle-ci
Code:
Sub Formeautomatique1_QuandClic()
Dim tablo(), Col&, Rw&, i&, j&, k&
With Sheets("Donnees")
    Col = .Cells(1, Columns.Count).End(xlToLeft).Column - 1
    Rw = .Cells(Rows.Count, 1).End(xlUp).Row
    ReDim tablo(1 To (Rw * Col) + 1, 1 To 3)
    For i = 2 To Rw
        For j = 2 To Col + 1
        k = k + 1
        If .Cells(1, j).Font.ColorIndex = 3 Or .Cells(i, j).Font.ColorIndex = 3 Then
            tablo(k, 1) = .Cells(i, 1)
            tablo(k, 2) = .Cells(1, j)
            tablo(k, 3) = .Cells(i, j)
        End If
        Next j
    Next i
End With
Application.ScreenUpdating = False
Cells(2, 1).Resize(UBound(tablo, 1), 3).Clear
Cells(2, 1).Resize(UBound(tablo, 1), 3) = tablo
With Range("A1:C" & [A65536].End(xlUp).Row)
.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
.Borders.LineStyle = xlContinuous
End With
With Range("C2:C" & [C65536].End(xlUp).Row).Font
.Bold = True
.ColorIndex = 3
End With
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
11
Affichages
363

Statistiques des forums

Discussions
312 609
Messages
2 090 199
Membres
104 450
dernier inscrit
Miguel937