Transformation colonne - ligne un peu spécifique

Bonjour à tous, je suis nouveau sur le forum , que je trouves très bien fait, je l'ai un peu parcouru avant de poster . Mais ne sachant pas comment expliquer "techniquement" mon besoin , je crée ce sujet :

Vous trouverez en pièce joint un document de ce que j'ai en entrée et de ce que j'aimerai en sortie .

Le problème est que je ne sais pas comment faire si ce n'est "manuellement" , sachant que excel est un super logiciel je me dis que je ne suis pas le seul dans ce type de besoin et qu'un truc doit bien existé

Merci à vous!

Bonne journée

5besoin.xlsx (12.37 Ko)

Bonjour,

Sur Excel tu peux utiliser les formules, si tu souhaites en apprendre d'avantage il existe beaucoup de tutoriel très riche sur le sujet.

ci-joint le fichier agrémenter de la formule nécessaire.

Cordialement.

2besoin.xlsx (12.88 Ko)

AHAHA you make my date

En faite, les aa1 etc en fait ce sont des valeurs numeriques et pas une concaténation de trois colonnes :p

Re,

Donc les données et résultat attendu se présentent comment ?

15|12|15 -> 151215

15|12|15 -> 42

Re voici le fichier avec des valeurs dessus

En gros les categories deviennent des lignes repetées autant de fois qu'il y a des valeurs en dessous , pas et période sont "copié collé" autant de fois qu'il ne le faut.

3besoin.xlsx (12.99 Ko)

D'accord j'ai compris ce que tu souhaites, malheureusement je viens de quitter mon bureau. Je regarde ça demain si ce n'est pas résolu jusque là.

Ok merci cool

slt studerd, slt vince,

un essai en VBA

Sub transformerColLigne()
Dim x As Worksheet, y As Worksheet
Dim i As Integer, j As Integer, k As Integer, lastrow_x As Integer, lastrow_y As Integer, lastcol_x As Integer
Dim z As Range
Dim FillRange As Variant

Set x = ThisWorkbook.Sheets(1)
Set y = ThisWorkbook.Sheets(2)
Set z = x.UsedRange

Application.ScreenUpdating = False

lastrow_x = z.Rows.Count + 2
lastcol_x = z.Columns.Count + 2
y.Range("D:G").ClearContents
FillRange = VBA.Array("Pas", "Periode", "categorie", "valeur")
y.Range("D4:G4").Value = FillRange
lastrow_y = y.Range("D1").Rows.Count + 4
k = 4

For i = 3 To lastcol_x - 2
    For j = 4 To lastrow_x
            If x.Cells(i, 3).Value <> 0 Then
                y.Cells(lastrow_y, 4).Value = x.Cells(j, 3).Value
                y.Cells(lastrow_y, 5).Value = x.Cells(j, 4).Value
                y.Cells(lastrow_y, 6).Value = x.Cells(k, 4).Value
                y.Cells(lastrow_y, 7).Value = x.Cells(j, i + 2).Value
                lastrow_y = lastrow_y + 1
            End If
    Next j
    k = k + 1
Next i
Application.ScreenUpdating = True
End Sub

Hello merci , mais comment fait on ?

Re,

voir fichier

1plus-besoin.xlsm (24.06 Ko)

@ ++

Rechercher des sujets similaires à "transformation colonne ligne peu specifique"