Transposition tableau lignes en colonnes

bonjour

J'aurai une nouvelle fois besoin de vos lumières

Bon, j'ai un tableau que je souhaite rapprocher avec un autre pour en vérifier la cohérence.

Simplement, ces 2 derniers ne sont pas conçu de la même manière. Je suis novice en la matière mais j'aimerais réussir à parvenir à mes fins, sachant que j'ai plus de 1000 collaborateurs en gestion. Autant dire que ça fait beaucoup de ligne.

Un fichier sera beaucoup plus parlant pour les experts...

Merci infiniment pour votre aide qui pourrait me faire gagner un temps fou !

Cordialement

Camille

26fichier-test.zip (4.53 Ko)

Bonjour,

Une proposition à tester

52fichier-test.zip (10.95 Ko)

A+

le résultat obtenu est super !!!!

Merci Frangy.

Peux tu me donner ta méthode. J'imagine que c'est une macro ?

Peux tu me donner la marche à suivre (sachant que je ne suis pas très calé)

Merci encore

cordialement

aeryess

Bonjour,

Il s'agit effectivement d'une macro.

Pour visualiser le code :

Alt + F11 pour ouvrir l'éditeur VBE,

puis Ctrl + R pour ouvrir l'explorateur de projets.

La procédure est placée dans un module standard (Modules > Module 1).

Voici le code commenté :

Sub Transposer()
Dim WsS As Worksheet, WsC As Worksheet
Dim DerLigS As Long, LigneS As Long, LigneC As Long
    'Feuille "Source"
    Set WsS = Worksheets("Source")
    'Feuille "Cible"
    Set WsC = Worksheets("Cible")
    'Première ligne cible
    LigneC = 3
    'Désactivation de la mise à jour de l'écran
    Application.ScreenUpdating = False
    'Détermination du numéro de la dernière ligne renseignée dans la feuille source
    DerLigS = WsS.Range("A" & Rows.Count).End(xlUp).Row
    'Balayage des lignes renseignées de la feuille "Source" par pas de 4.
    'Chaque step correspond à un collaborateur, chaque collaborateur occupant 4 lignes du tableau
    For LigneS = 1 To DerLigS - 4 Step 4
        'Copie transposée du nom du collaborateur
        WsS.Cells(LigneS + 1, 5).Copy WsC.Cells(LigneC, 1)
        'Copie transposée des 3 cellules "Congés légaux - Reliquat 1 (N-2)"
        WsS.Cells(LigneS + 3, 2).Resize(, 3).Copy WsC.Cells(LigneC, 2)
        'Copie transposée des 3 cellules "Congés légaux - Référence (N-1)"
        WsS.Cells(LigneS + 2, 2).Resize(, 3).Copy WsC.Cells(LigneC, 5)
        'Copie transposée des 3 cellules "Congés légaux - En cours d'acquisition"
        WsS.Cells(LigneS + 1, 2).Resize(, 3).Copy WsC.Cells(LigneC, 8)
        'Incrémentation ligne cible
        LigneC = LigneC + 1
    Next LigneS
    WsC.Activate
    Set WsC = Nothing: Set WsS = Nothing
End Sub

A+

Genial Frangy,

J'ai même pu supprimer mon total en diminuant mes steps

Me reste plus qu'à aller frimer devant mes collègues. Grâce à toi !!!

Bonne journée

cordialement

Rechercher des sujets similaires à "transposition tableau lignes colonnes"