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 sur plusieurs lignes


Sujet :

Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Transposition sur plusieurs lignes
    Bonjour,
    j'ai trouvé ce forum en cherchant une solution et je vous écris çar je n'ai rien trouvé sur Internet. Je suis novice avec Excel. J'ai un fichier avec les résultats d'une étude. Tous les résultats (14 différents résultats) pour chaque participant se trouve sur une même colonne, un à la suite de l'autre. J'ai aussi une autre colonne avec un autre résultat qu'il me faudra intégrer aussi.
    Bref je cherche a faire une transposition mais avec un "saut à la ligne" à chaque 14 cellules. Ainsi, j'aurai une ligne par participant.
    J'utilise Open Office. Ce n'est pas tout à fait Excel mais je crois que c'est tout aussi possible.
    Par contre, je lis des choses sur les macros et je ne sais pas dutout faire une macro. C'est possible de s'en sortir facilement?
    Si vous voulez plus d'explications n'hésitez pas.
    J'ai joint mon document, vous verrez il y a 14 fois le même numéro de participant qui correspond à 14 réponses différentes (Zreponses). Il y a aussi la colonne "condition" que intégrer aux résultats pour ensuite pouvoir classer les sujets par conditions.
    Je voudrais apprendre à le faire car ça me sera utile dans mes études.

    Un énorme merci pour votre temps!

    Cath
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Cathj, bonsoir le forum,

    Je ne sais pas si le code ci-dessous fonctionne avec OpenOffice mais avec Excel (2010) il fonctionne.

    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
    Sub Macro1()
    Dim O1 As Object 'déclare la variable O1 (Onglet 1)
    Dim O2 As Object 'déclare la variable O2 (Onglet 2)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim CEL As Range 'déclare la variable CEL (CELlule)
    Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim PLV As Range 'déclare la variable PLV (Plage Visible)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
     
    Set O1 = Sheets("Feuille1") 'définit l'onglet O1
    Set O2 = Sheets("Feuil2") 'définit l'onglet O2 (à adapter)
    DL = O1.Cells(Application.Rows.Count, 4).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 4 (=D) de l'onglet O1
    Set PL = O1.Range("D2:D" & DL) 'définit la plage PL
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
        D(CEL.Value) = "" 'alimente le dictionnaire D
    Next CEL 'prochaine cellule de la boucle
    TMP = D.keys 'récupère dans le tableau temporaire TMP la liste du dictionnaire D sans doublon
    For I = 0 To UBound(TMP) 'boucle sur touts les éléments du tableau TMP
        'filtre en A1 la colonne 4 (=D) de l'onglet O1 avec TMP(I) comme critère
        O1.Range("A1").AutoFilter Field:=4, Criteria1:=TMP(I)
        'définit la plage PLV (cellule visibles (non filtrées) de la plage PL décalée d'une colonne à droite = colonne E)
        Set PLV = PL.Offset(0, 1).SpecialCells(xlCellTypeVisible)
        'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onglet O2)
        Set DEST = IIf(O2.Range("A1") = "", O2.Range("A1"), O2.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
        DEST.Value = TMP(I) 'place dans DEST l'"ident"
        'transpose dans DEST décalée d'une colonne à droite les ZReponses
        DEST.Offset(0, 1).Resize(, 14) = Application.Transpose(PLV)
        O1.Range("A1").AutoFilter 'supprime le filtre automatique
    Next I 'prochian élément de la boucle
    End Sub
    Cette macro place ligne après ligne l'ident suivit des 14 ZReponses..
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonsoir Thautheme

    Merci beaucoup !
    Mais je n'ai jamais fait de macro, j'ai donc découvert un peu ce que c'était. Je suis sur Excel maintenant aussi ça va un peu mieux.
    Je n'arrive pas à lancer le script... cette phrase me crée une erreur
    Set D = CreateObject("Scripting.Dictionary") '
    Que dois-je en faire? Comment crée t-on un dictionnaire? Je fais mes recherches sur le net mais je n'arrive pas à comprendre et mes essais ne donnent rien.
    Si quelqu'un peut m'orienter un peu!

    Merci

  4. #4
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Cathj, bonsoir le forum,

    Surement un problème de références. Je n'ai pas les compétences pour te dire laquelle exactement il faut que tu rajoutes mais compare avec la capture d'écran. Ouvre VBE (Visual Basic Editor) avec [Alt]+[F11]. Menu Outils / Références... Rajoute celles qui manquent. Puis ferme VBE. Ça devrait marcher...
    Images attachées Images attachées  
    À plus,

    Thauthème

    Je suis Charlie

Discussions similaires

  1. Ecrire une requete SQL sur plusieurs lignes
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 15/11/2004, 14h47
  2. Response.Write sur plusieurs lignes
    Par simoryl dans le forum ASP
    Réponses: 2
    Dernier message: 31/08/2004, 22h49
  3. Réponses: 2
    Dernier message: 10/05/2004, 07h55
  4. TDBGrid - Un enregistrement sur plusieurs lignes
    Par BRODU dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/05/2004, 07h53
  5. Define sur plusieurs lignes
    Par Gogoye dans le forum C
    Réponses: 6
    Dernier message: 06/10/2003, 11h45

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