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 :

transposer toutes les 13 lignes


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut transposer toutes les 13 lignes
    bonjour,

    je n'arrive pas à appliquer correctement la transposition; j'ai un tableau qui contient des valeurs:

    nom: Dupond
    prénom: jean
    email: jean@dupond.ch
    ...
    nom: Tartempion
    prénom: joseph
    email: jt@dev.com
    ....

    j'aimerais transposer mon tableau comme ceci:
    dupond | jean | jean@dupond.ch
    Tartempion | Joseph | jt@dev.com
    ...

    en fait, dans mon fichier source, ça change de personne toutes les 13 lignes. Donc, dans mon fichier de destination, je devrais avoir 13 colonnes.

    est-ce que qqn a une macros qui fonctionne? ou comme puis-je faire?

    merci de votre aide
    skeut

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    avec les hypothèses que vos en-têtes de champs se trouvent en colonne A et vos données en colonne B dans l'onglet Feuil1 et que vous n'avez pas de ligne vide entre chaque personne, vous pouvez mettre vos données sous la forme d'une table avec en-tête dans l'onglet Feuil2 en suivant la procédure suivante:

    1/ en ligne 1 vous mettez vos en-têtes de champs (je pars sur l'hypothèse des 3 champs nom, prenom, email)

    2/ en cellule B2 vous écrivez la formule suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil1!$B$1;(LIGNE(A1)-1)*3+MOD(COLONNE(A1)-1;3);0)
    Modifiez le 3 par le nombre de champs que vous avez (13 je crois)

    3/ vous recopiez cette formule sur autant de lignes que vous avez de personnes et autant de colonnes que vous avez de champs (3 dans l'exemple)

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    Bonjour

    En supposant que les données sources débutent en A1 de la Feuille 1 :

    En A1 de feuille 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(Feuil1!$A:$A;(MOD(COLONNE()-1;13)+1)+13*(LIGNE()-1))
    A tirer vers la droite (jusqu'en colonne M), puis l'ensemble vers le bas.

    Amicalement
    Nad

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut à tous,
    Et voici un proposition avec Code, je n'ai pas considéré de ligne de titre et les données à transposer en colonne B de la feuille1.
    Placement dans la feuille 2 à partir de A1
    Il y a surement plus court mais je suis plus en état

    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
    Sub Transpose()
     
    Dim DerLig As Long, c As Long, Rcible As Long, r As Long, Nb As Long
     
    DerLig = Sheets("sheet1").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'Récupère la dernière ligne remplie
    Nb = DerLig / 13 'Défini le nombre de ligne transposée à obtenir
     
    For r = 1 To DerLig 'Boucle sur toutes les lignes à transposer
            Rcible = Rcible + 1 'Incrémente la ligne cible
            For c = 1 To 13 'Boucle par 13 pour placer dans les bonnes colonnes
                    Sheets("sheet2").Cells(Rcible, c) = Sheets("sheet1").Cells(r, 2) 'Placement de la valeur
                    r = r + 1 'Incrémente r pour faire correspondre à la ligen de la feuille 1
            Next c
            r = r - 1 'Pour correspondre au bon "r" suivant via la boucle
            If Rcible = Nb Then Exit Sub 'Sor de la sub si le nombre de ligne transposé est atteint
    Next r
     
    End Sub
    A+

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut autre exemple
    pour voir
    Fichiers attachés Fichiers attachés

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    merci à tous pour les réponses et bonne continuation.
    skeut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. additionner les valeurs toutes les 4 lignes
    Par Wafa_o dans le forum Langage
    Réponses: 2
    Dernier message: 29/12/2009, 16h13
  2. [E-03] copier une cellule toutes les 7 lignes
    Par hdisnice dans le forum Excel
    Réponses: 7
    Dernier message: 22/03/2009, 12h43
  3. Numérotation automatique toutes les 5 lignes
    Par sfournis dans le forum Mise en forme
    Réponses: 3
    Dernier message: 10/12/2008, 15h08
  4. [RegEx] Insérer une ligne toutes les n lignes dans un tableau
    Par guidav dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2008, 15h12
  5. [URLRewriting] Transposer toutes les url .php en .html
    Par asthyanax dans le forum Apache
    Réponses: 1
    Dernier message: 26/06/2007, 00h07

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