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 :

Transformer tableau plusieurs colonnes de données en 1 tableau à 1 colonne de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Février 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Février 2017
    Messages : 1
    Par défaut Transformer tableau plusieurs colonnes de données en 1 tableau à 1 colonne de données
    Bonjour,

    Je m'amuse un peu en VBA mais la je sèche complètement.

    Voila mon problème :
    J'extrait un tableau qui comporte environ 1000 lignes.
    Il comporte 16 colonnes, 4 d'informations texte et 12 colonnes de données (1 par mois).
    Je souhaite avoir une seule colonne de données avec une autre colonne indiquant le mois concerné.
    En gros le tableau fera à la fin 1000 x 12 lignes puisque les données vont se coller les unes en dessous des autres, il faut ajouter une colonne indiquant le mois concerné, et mettre les données dans la colonne donnée.
    Je ne sais pas si je suis clair...

    Je peux envoyer un exemple à qui voudra bien m'aider

    merci à vous les pros d'excel

    Fred.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    avant de parler VBA, est-ce qu'une solution par formule Excel pourrait être envisageable ?

    car un sujet similaire a été posté hier ici : https://www.developpez.net/forums/d1...sieurs-lignes/


    par VBA, il faut récupérer ta plage dans un Array
    ensuite boucler sur chaque colonne du array via Application.Index pour injecter les colonnes une par une dans ta colonne finale de destination
    c'est la solution la plus rapide ... sinon il reste la possibilité de faire une double boucle pour balayer chaque élément du Array 2D, pour les placer dans un Array 1D qu'ensuite tu injectes dans ta colonne de destination

    EDIT : la solution par application.index est valable pour le souhait de poser les colonnes les unes en dessous des autres ... mais également pour travailler par ligne plutôt que par colonne
    je précise car ça pouvait prêter à confusion.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par fredislost Voir le message
    Je m'amuse un peu en VBA
    Pour adapter la réponse, quel est ton niveau en VBA ?

  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
    Hé bien tu vas commencer (tu vas devoir t'y mettre un peu) sur ces bases :
    1) tu déclares un tableau de 12000 lignes et de 2 colonnes
    2) tu parcours le tableau que tu as déjà en deux boucles imbriquées
    -- for k ..... to .... ' parcours de ses lignes)
    ----- for n ... to ... 'parcours de ses colonnes sur chaque ligne, donc, à partir de la 1ère colonne des données (ignorant celles des informations)
    ----------tu lis ce qu'il y a en chacune de ces colonnes
    ----------tu attribues en colonne 1 de ton nouveau tableau chaque données, en l'y mettant en ligne k + n - le N° de la première colonne des données
    ----------tu attribues en colonne 2, à la même ligne, le rang du mois concerné
    ------ next
    -- next
    J'attends de voir ce que tu en fais.

    EDIT : Bonjour Menhir et amitiés
    J'ignore quel est le niveau du demandeur. Quel qu'il soit, il a la démarche à suivre, ce qu'il pourra faire s'il s'intéresse à ce que sont les matrices.
    Même s'il s'y prend mal, ses essais seront au moins un premier pas nécessaire en vue d'attraper son poisson lui-même plutôt que de le faire totalement pêcher par d'autres.

    Je considère en ce qui me concerne qu'il n'y a aucune différence de raisonnement entre une matrice informatique et un rangement dans les tiroirs d'une commode à partir de ce que l'on trouve dans une autre commode dont les tiroirs sont agencés différemment. Ai-je tort ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2010, 09h07
  2. Réponses: 0
    Dernier message: 25/05/2010, 01h43
  3. Réponses: 0
    Dernier message: 29/04/2010, 16h50
  4. [SQL] Remplir une base SQL à partir d'un tableau à plusieurs lignes et colonnes
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/08/2007, 08h56

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