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

Macros et VBA Excel Discussion :

Transposition d'un tableau (VBA) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    55
    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 : 55
    Par défaut Transposition d'un tableau (VBA)
    Bonjour,

    Je tente de réaliser une transposition de tableau avec un code VBA que j'ai modifié mais le résultat n'est pas probant. En fait, la première colonne (N° unité) et la deuxième colonne (N° séjour) sont verticales et les valeurs (dates correspondant à la durée du séjour sont organisées horizontalement). L'objectif étant que toutes ces données soient en colonne. Je précise que ce tableau est très long (+12000 lignes) et que pour chaque ligne le nombre de colonnes disposant d'une valeur varient en fonction de la durée du séjour.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Transpose()
    Sheets("TRANSPOSE").Cells.Clear
    With Sheets("SELECTION BD")
    NbCol = .Range("B1:" & .Range("IV1").End(xlToLeft).Address).Columns.Count
    For Each X In .Range("A2:" & .Range("A65536").End(xlUp).Address)
        LigDest = Sheets("TRANSPOSE").Range("A65536").End(xlUp).Offset(1, 0).Row
        For Each Y In X.Offset(0, 1).Resize(1, NbCol)
            Sheets("TRANSPOSE").Cells(LigDest, 1) = X
            Sheets("TRANSPOSE").Cells(LigDest, 2) = Y
            LigDest = Sheets("TRANSPOSE").Range("A65536").End(xlUp).Offset(1, 0).Row
        Next
    Next
    End With
    End Sub

    Nom : Transposition tableau 2.jpg
Affichages : 3232
Taille : 189,5 Ko

  2. #2
    Membre confirmé
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    55
    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 : 55
    Par défaut Complément d'information
    Bonjour,

    Sur l'image que j'ai envoyé la source et le résultat (tableau en colonnes) sont sur la même feuille pour simplifier. En fait, ces tableaux sont sur des feuilles différentes. Le code que je vous ai présenté a comme inconvénient également de ne pas conserver les entêtes des colonnes.

    En vous remerciant.

    M

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    alors présenter un code en rapport avec le fichier de travail réel …

    S'intéresser par exemple à la propriété   End   permettant de trouver la dernière cellule d'une ligne
    comme documentée dans l'aide VBA interne sans compter dans les discussions du bon forum,
    ici étant celui des formules de calculs d'Excel et non celui dédié au VBA ! (edit : sujet déplacé dans le bon forum depuis …)

    ___________________________________________________________________________________________________________
    Je suis Paris, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    J'utiliserais personnellement le tremplin d'un tableau
    J'en connais le nombre de colonnes (trois)
    J'en connais également le nombre de liges : -->> derlig étant la dernière cellule remplie de la colonne A - 1 (because entête), le nombre de lignes de ce tableau devra donc être du genre (à main levée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlig + range("D2:X" & derlig).specialcells(xlcelltypeconstants).cells.count
    Je traiterais ensuite de bas en haut avec une boucle for ... to ... Next Step -1
    puis injecterais mon tableau où je le souhaite

    PS : nous ne sommes pas ici dans la section VBA ...

  5. #5
    Membre confirmé
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    55
    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 : 55
    Par défaut
    Bonsoir et merci,


    Je n'avais pas connaissance de cette réorganisation du forum Excel. Excusez moi.
    Quelqu'un pourrait basculer cette discussion sur la bonne rubrique, svp.

    En vous remerciant,

    M

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bon
    Tu es en effet nouveau et donc excusable. Mais fais s'il te plait dorénavant le choix de la section adéquate.

    Il semble que ce soit la semaine des calculs arithmétiques et je vais donc t'y inviter -->>
    Il y a dans ce qui suit SURTOUT de l'arithmétique --->>
    Exemple avec des données commençant à la ligne 2, colonne A de Feuil1 et à "transposer" à partir de la ligne 2, colonne A de Feuil2 --->> CommandButton1 sur Feuil1 --->>
    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
    Private Sub CommandButton1_Click()
      derlig = Range("A" & Rows.Count).End(xlUp).Row
      dercol = UsedRange.SpecialCells(xlCellTypeLastCell).Column
      nblig = derlig - 1 + Range(Cells(2, 4), Cells(derlig, dercol)).SpecialCells(xlCellTypeConstants).Cells.Count
      nbcol = 3
      ReDim tablo(1 To nblig, 1 To nbcol)
      ou = 1
      For k = 2 To derlig
        For j = 1 To Rows(k).SpecialCells(xlCellTypeConstants).Cells.Count - 2
           tablo(ou, 1) = Cells(k, 1)
           tablo(ou, 2) = Cells(k, 2)
           tablo(ou, 3) = Cells(k, j + 2)
           ou = ou + 1
        Next
      Next
      Worksheets("Feuil2").Range("A2:C" & ou).Value = tablo
    End Sub
    Tu aimes l'arithmétique ? *******

    ******* : si pas des masses ou que cela te donne le tournis --->> intéresse-toi à la méthode worksheetfunction.transpose, appliquée en boucle au contenu, pour chaque ligne, des cellules remplies à partir de la 3ème colonne

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

Discussions similaires

  1. [XL-2010] Algo transposition tableau VBA
    Par richert90 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/12/2013, 21h56
  2. [VBA Access] programmer la transposition d'un tableau
    Par xxlunexx dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/07/2007, 11h28
  3. transposition d'un tableau de colonnes en lignes
    Par Prissou dans le forum VBA Word
    Réponses: 5
    Dernier message: 16/06/2007, 19h29
  4. variable tableau vba
    Par ferronimus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/06/2007, 14h20
  5. Duplication dans un tableau (VBA et MySQL)
    Par xianxian620 dans le forum Access
    Réponses: 5
    Dernier message: 19/02/2007, 13h06

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