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 :

Transformation d'un tableau d'un fichier excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut Transformation d'un tableau d'un fichier excel
    Bonjour,

    Je ne connais pas du tout le langage VBA (je suis plutot Java), et j'aimerais effectué une certaine transformation sur un fichier excel.

    J'ai un tableau de cette forme :
    Lots Interfaces Analyse Date1 ... Date2 ...
    L1 I1 A1 12/06/09 15/10/09
    L2 I2 A2 04/06/09 28/10/09

    J'aimerais le transformer sous cette forme là:

    04/06/09 L2 I2 A2
    12/06/09 L1 I1 A1
    15/10/09 L1 I1 A1
    28/10/09 L2 I2 A2

    donc :
    - d'abbord faire un tri sur l'ensemble des dates (de colonnes que j'aurais défini)
    - puis pour chacune des dates, reprendre certains colonnes avec leurs valeurs associées.

    J'aimerais aussi que ce tableau soit sur une nouvelle feuille.

    Est-ce que vous pourriez me donner quelques clés pour pouvoir faire un programme comme ça sans devoir apprendre à maitriser à fond VBA ?

    Je vous remercie bcp :-)

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Par défaut
    d'abord faut déplacer les colonne que tu veu garder là ou tu veu les avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("feuilleciblé").range("lettredecolonneciblé").value=sheets("feuillesource").range("talettredecolonne").value
    tu répère ceci pour toutes tes colonnes

    ensuite pour trier voici la fonction que j'ai utilisé dans mon programme actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Tri()
        Application.ScreenUpdating = False
     
        Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'je suppose que le key1 est reproductible en key2 etc... pour trier sur chaque colonnes
     
        Application.ScreenUpdating = True
    End Sub

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    Une piste de réflexion, pourquoi ne pas faire un tableau croisé dynamique ? Au préalable vous créez un tableau croisé basé sur votre tableau (données / rapport de tableau croisé dynamique) puis vous créez votre tableau en y mettant en entête de ligne les champs lots, interface et analyse (n'oubliez pas d'enlever les différents totaux). Vous enregistrez. Il ne vous reste plus qu'a enregistrer une macro qui vous mettra le champ date1 devant le champ lot puis qui vous fait un copier coller (valeurs et format) dans votre nouvelle feuille. de même pour le champ date2 ...

    cf piece jointe
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut re
    garion28 :En fait, comme idéalement, on devrait pouvoir rajouter de nouveleles colonnes, sans que ca change dans mon programme, j'aimerais d'abbord dans :
    - Faitre le tri de l'ensemble des dates (de plsuieurs colonnes), dans une colonne résultante de ma nouvelle feuille
    - et ensuite pour chacune de ses dates, recopier les infos d'autres colonnes.

    Y'a des structures de listes où je pourrais stocker cet ensemble de dates triés pour itérer dessus par la suite?

    Access Newbie : le nouveau tableau doit se créer juste en cliquant sur un bouton en fait.

    Je vous remercie.

  5. #5
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour thierry_b Access Newbie garion28 le forum
    suppose tes données sur colonne de a2 : e sur la feuil1 . copy sur feuil2
    code brute a simplifier & adapter

    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
    Sub essai()
    Dim i As Long, z As Long
    Application.ScreenUpdating = False
    Sheets("feuil1").Activate
    For i = 2 To Range("d65535").End(xlUp).Row
    With Sheets("feuil2")
    .Cells(i, 1) = Cells(i, 4): .Cells(i, 2) = Cells(i, 1): .Cells(i, 3) = Cells(i, 2): .Cells(i, 4) = Cells(i, 3)
    End With: Next i
    z = Sheets("feuil2").Cells.Find("*", , , , , xlPrevious).Row
    For i = 2 To Range("e65535").End(xlUp).Row
    With Sheets("feuil2")
    .Cells(i + z, 1) = Cells(i, 5): .Cells(i + z, 2) = Cells(i, 1): .Cells(i + z, 3) = Cells(i, 2): .Cells(i + z, 4) = Cells(i, 3)
    End With: Next i
    Sheets("feuil2").Activate: [a2:d10000].Sort Key1:=Range("a2"), Order1:=xlAscending, Header:=xlGuess
    End Sub

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut re
    Hello,

    Tu pourrais commenter un peu ton code, pq j'avoue que je ne comprends pas trop.

    Je vais lire quelques tutos aussi pour m'aider dans la syntatxe, fonctions...

    Je te remercie.

  7. #7
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re ,thierry le fil macro essai . je suppose tes données sur la feuille1 de a2 jusqu'a la colonne e jusqu'a la derniere ligne non vide

    en 1 j active la feuille1 en cas ou tu lances pas la macro de cette feuille on peut simplifier avec l' instruction with mais j'ai fais le plus simple possible
    en 2 je boucle sur la colonne d de d2 jusqu'a la derniére cellule non vide de la colonne donc toute les dates de la colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 2 To Range("d65535").End(xlUp).Row
    je copy sur la feuille2 en a2 ect....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("feuil2")
    .Cells(i, 1) = Cells(i, 4): .Cells(i, 2) = Cells(i, 1): .Cells(i, 3) = Cells(i, 2): .Cells(i, 4) = Cells(i, 3)
    End With: Next i
    cells(i,1) de la feuille 2 est egal cells(i,4) de la feuille 1 ect.....
    je fais la méme chose avec la colonne e mais avec la difference au prealable je cherche la derniere row remplie sur feuille 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z = Sheets("feuil2").Cells.Find("*", , , , , xlPrevious).Row
    pour pas ecraser les anciennes valeurs
    dans ton cas z =4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("feuil2")
    .Cells(i + z, 1) = Cells(i, 5): .Cells(i + z, 2) = Cells(i, 1): .Cells(i + z, 3) = Cells(i, 2): .Cells(i + z, 4) = Cells(i, 3)
    End With: Next i
    puis je mets tout cas dans l' ordre croissant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("feuil2").Activate: [a2:d10000].Sort Key1:=Range("a2"), Order1:=xlAscending, Header:=xlGuess

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

Discussions similaires

  1. Remplissage tableau 2D depuis fichier Excel
    Par kato73 dans le forum LabVIEW
    Réponses: 3
    Dernier message: 04/04/2011, 13h17
  2. Comment transformer un tableau XHTML en fichier Excel
    Par JLC83 dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 12/08/2010, 15h00
  3. Comment creer un tableau dans 1 fichier excel (vb.net)
    Par lolymeupy dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/01/2009, 10h08
  4. Tableau dans Word + Fichier Excel
    Par dado91400 dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/07/2007, 19h57

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