Transcrire des colonnes en ligne par date

Bonjour,

Je ne sais pas si je devrais utiliser VBA ou de simple fonctions excel marcherait mais je suis vraiment bloquée, je n'arrive pas à trouver la solution. Voici mon problème:

j'ai une base de donnée excel dans laquelle il y a des informations entre autre le numero de l'employé, 3 types de primes et leur date de paiements. j'aimerai dans un nouveau tableau (nouvel onglet) afficher les primes payables selon le mois et l'année qu'on lui demande.

dans la base de données les primes et leur date sont en colonnes, j'ai besoin que dans le nouveau tableau elle soient inscrite en ligne même si l'employé se répéterait...j'ai mis un fichier excel comme exemple.

ps: ma base de donnée est plus de 300 employés - pour fin d'exemple j'en ai mis que quelques uns

Merci beaucoup de votre aide

13exemple.xlsx (9.14 Ko)

Bonjour,

est-ce que le nombre de primes est extensible ?

si NON, on doit pouvoir passer par un TCD

si OUI, il faut à mon sens une macro (assez simple) ... bref cela me rappelle des souvenirs pas si anciens !!

Bonjour et bienvenue sur le forum

Bonjour à tous

Un essai à tester. Te convient-il ?

Bye !

8exemple-v1.xlsm (25.65 Ko)

bonjour gmb,

je reprends (j'avais du interrompre)

une autre version

Sub primes()
ligne = 8
With Sheets("résultat")
    .Range("A8:C" & .Range("A" & Application.Rows.Count).End(xlUp).Row + 1).ClearContents
    For i = 2 To Range("A" & Application.Rows.Count).End(xlUp).Row
        For j = 2 To Range("A" & Application.Columns.Count).End(xlToRight).Column Step 2
            If Cells(i, j) = "" Then Exit For
            If Month(Cells(i, j + 1)) = .Range("B4") And Year(Cells(i, j + 1)) = .Range("C4") Then
                .Cells(ligne, 1) = Cells(i, 1)
                .Cells(ligne, 2) = Cells(i, j)
                .Cells(ligne, 3) = Cells(i, j + 1)
                ligne = ligne + 1
            End If
        Next j
    Next i
End With
End Sub

écriture un peu plus "sommaire" j'avoue ...

7primes.xlsm (17.19 Ko)

Je vous remercie énormément pour les réponses rapides.

@steelson ca semble très bien marcher mais comment je fais pour mettre le bouton Linéariser dans l'onglet résultat stp? je dois laisser la base de données "clean"

Merci encore vous me sauvez la vie

Sub primes()
Dim ws As Worksheet
ligne = 8
Set ws = Sheets("Base de données")
With ws
    Range("A8:C" & Range("A" & Application.Rows.Count).End(xlUp).Row + 1).ClearContents
    For i = 2 To .Range("A" & Application.Rows.Count).End(xlUp).Row
        For j = 2 To .Range("A" & Application.Columns.Count).End(xlToRight).Column Step 2
            If .Cells(i, j) = "" Then Exit For
            If Month(.Cells(i, j + 1)) = Range("B4") And Year(.Cells(i, j + 1)) = Range("C4") Then
                Cells(ligne, 1) = .Cells(i, 1)
                Cells(ligne, 2) = .Cells(i, j)
                Cells(ligne, 3) = .Cells(i, j + 1)
                ligne = ligne + 1
            End If
        Next j
    Next i
End With
End Sub
8primes.xlsm (17.47 Ko)

Merci beaucoup, vous avez résolu mon problème

Rechercher des sujets similaires à "transcrire colonnes ligne date"