IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Transposition partielle d'un tableau


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : contrôleur gestion

    Informations forums :
    Inscription : Septembre 2014
    Messages : 53
    Points : 26
    Points
    26
    Par défaut Transposition partielle d'un tableau
    Bonjour,


    Un tableau RH m'a été envoyé mais pour l'utiliser dans mon tableau de bord j'ai besoin d'avoir un fichier avec des données uniquement verticales. Dans le cas présent le champ unité et le champ statut ne posent pas de problème mais les mois sont organisés à l'horizontale. Je me permets de vous envoyé un fichier qui sera certainement plus explicite. Le 1er tableau est l'extrait du tableau RH et le second tableau est ce à quoi je dois arriver.


    Transposition tableau.xlsx

  2. #2
    Membre habitué Avatar de Klin89
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 119
    Points : 178
    Points
    178
    Par défaut
    Bonsoir morgan75,

    Je ne sais pas si c'est réalisable par formules
    Une solution vba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Option Explicit
    Sub transpose()
    Dim a, b(), i As Long, j As Long, n As Long, x
        With Sheets("Transposition TB").Range("a4").CurrentRegion
            a = .Value
        End With
        ReDim b(1 To (((UBound(a, 2) - 2) / 2) * (UBound(a, 1) - 1)), 1 To 5)
        For i = 2 To UBound(a, 1)
            For j = 3 To UBound(a, 2) Step 2
                n = n + 1
                x = Split(a(1, j), "-")
                b(n, 1) = a(i, 1): b(n, 2) = a(i, 2)
                b(n, 3) = x(0): b(n, 4) = a(i, j)
                b(n, 5) = a(i, j + 1)
            Next
        Next
        'Restitution en "Feuil1"
        With Sheets("Feuil1").Cells(1).Resize(, 5)
            .CurrentRegion.Clear
            .Value = [{"Unité","Code Statut","Mois","Eff Prév","Etp Rém"}]
            .Offset(1).Resize(n).Value = b
            With .CurrentRegion
                .Font.Name = "calibri"
                .Font.Size = 10
                .VerticalAlignment = xlCenter
                .BorderAround Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                With .Rows(1)
                    .BorderAround Weight:=xlThin
                    .HorizontalAlignment = xlCenter
                    .Interior.ColorIndex = 36
                    .Font.Size = 11
                End With
                .Columns.ColumnWidth = 14
            End With
            .Parent.Activate
        End With
    End Sub
    klin89

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : contrôleur gestion

    Informations forums :
    Inscription : Septembre 2014
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Bonjour Klin 89,

    C'est exactement ce que je cherchais !...à un détail prêt, je souhaitais faire apparaître le numéro des mois "ex: 1 pour janvier" et non le nom du mois "ex: janvier". Je suis admiratif devant la puissance des codes VBA....par contre, comme je le mentionnais dans mon 1er message, le tableau que j'ai fait parvenir n'est qu'un extrait du tableau RH envoyé. Celui-ci contient beaucoup plus de colonnes (toujours les mêmes et à la même place heureusement).
    Au vu de mes compétences en VBA, je ne suis pas sur d'être capable d'adapter le script de la macro. Mais devant le résultat inespéré obtenu, je vais tenter de bidouiller le code pour coller au tableau RH initial. Je peux revenir vers toi si je rencontre des problèmes? Merci beaucoup pour t'être penché sur mon problème.

  4. #4
    Membre habitué Avatar de Klin89
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 119
    Points : 178
    Points
    178
    Par défaut
    Re morgan75,

    Pour convertir, les mois(texte) en nombre, j'avais un souci avec fevrier sans accent
    Tu rencontreras peut-être le même problème avec le mois d'août

    Le code réajusté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Option Explicit
    Sub transpose()
    Dim a, b(), i As Long, j As Long, n As Long, x
        With Sheets("Transposition TB").Range("a4").CurrentRegion
            a = .Value
        End With
        ReDim b(1 To (((UBound(a, 2) - 2) / 2) * (UBound(a, 1) - 1)), 1 To 5)
        For i = 2 To UBound(a, 1)
            For j = 3 To UBound(a, 2) Step 2
                n = n + 1
                x = Split(a(1, j), "-")
                If LCase(x(0)) = "fevrier" Then x(0) = "février"
                b(n, 1) = a(i, 1): b(n, 2) = a(i, 2)
                'b(n, 3) = x(0): b(n, 4) = a(i, j)
                'ici le réajustement
                b(n, 3) = Month(CDate("01/" & "" & x(0) & "")): b(n, 4) = a(i, j)
                b(n, 5) = a(i, j + 1)
            Next
        Next
        With Sheets(2).Cells(1).Resize(, 5)
            .CurrentRegion.Clear
            .Value = [{"Unité","Code Statut","Mois","Eff Prév","Etp Rém"}]
            .Offset(1).Resize(n).Value = b
            With .CurrentRegion
                .Font.Name = "calibri"
                .Font.Size = 10
                .VerticalAlignment = xlCenter
                .BorderAround Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                With .Rows(1)
                    .BorderAround Weight:=xlThin
                    .HorizontalAlignment = xlCenter
                    .Interior.ColorIndex = 36
                    .Font.Size = 11
                End With
                .Columns.ColumnWidth = 14
            End With
            .Parent.Activate
        End With
    End Sub
    klin89

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : contrôleur gestion

    Informations forums :
    Inscription : Septembre 2014
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Bonjour Klin 89,

    Je tente de comprendre le script à partir de la seule méthode que l'on m'a apprise c'est à dire le pas à pas détaillé (F8), mais comme tout ce déclenche à la fin.... Serait il possible d'avoir des commentaires par ligne de code sachant que je dois intégrer également après le code statut, une colonne libellée statut. Ce qui m'est actuellement impossible. Encore merci.

Discussions similaires

  1. [XL-2010] Insertion + copie de ligne + transposition partielle
    Par olivegrise dans le forum Excel
    Réponses: 3
    Dernier message: 05/05/2013, 23h03
  2. [XL-2003] Transposition particulière d'un tableau
    Par Soycd dans le forum Excel
    Réponses: 7
    Dernier message: 07/07/2010, 15h19
  3. affichage partiel d'un tableau
    Par étoile de mer dans le forum Débuter
    Réponses: 2
    Dernier message: 07/11/2009, 19h23
  4. Foreach et parcours partiel d'un tableau
    Par gandolfi dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2008, 09h57
  5. Export partiel d'un tableau en CSV
    Par vanitom dans le forum Excel
    Réponses: 2
    Dernier message: 07/02/2008, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo