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 :

Creer un tableau a partir d'autres tableau


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
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Par défaut Creer un tableau a partir d'autres tableau
    Bonjour,

    J'ai une problématique qui me paraissait simple mais il semble que cela soit compliqué (peux être suis-je entouré de personnes aussi neuneux que moi en Excel...). Bref j'aurais bien besoin d'aide.

    Voila j'ai une feuille excel avec plusieurs onglets. Dans chaque onglet il y a le même tableau (même structure et champs mais évidement les valeurs sont différentes). Une des colonnes de ces tableaux (appelons la "Résumé") est un simple champs binaire (OUI/NON) qui indique si la ligne doit être prise en compte ou non dans un tableau résumé final (que je cherche à construire justement).

    J'ai donc créé un nouvel onglet "Résumé" dans lequel je veux simplement créer automatiquement un tableau constitué de toutes les lignes des mes autres tableaux dont le champ "Résumé" vaut "OUI". A contrario les lignes dont le champs "Résumé" vaut "NON" seront ignorées.

    J'espere avoir été assez clair...

    Merci beaucoup pour votre aide.

    Gorille

  2. #2
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut Fusion de fichier
    Bien sûr que c'est possible; Il n'y a aucune difficulté.

    On fait une lecture de chacun des feuillets.
    Si ce n'est pas le feuillet fusion , on calcule le nombre de ligne.
    On parcourt chaque ligne du fichier pour voir si le flag Résumé est à "OUI".

    J'ai fait au plus simple.
    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
     
    Sub fusion_feuillet()
    Const feuille_fusion = "FUSION"
    Dim feuille_fusion_existe As Boolean
    feuille_fusion_existe = False
     
    For Each feuill In ActiveWorkbook.Worksheets
    If UCase(feuill.name) = feuille_fusion Then feuille_fusion_existe = True: Exit For
    Next
     
    If feuille_fusion_existe = True Then
      Worksheets(feuille_fusion).Cells.ClearContents
    Else
      ActiveWorkbook.Worksheets.Add
      ActiveWorkbook.ActiveSheet.name = feuille_fusion
    End If
     
    col_resumé = 5  ' A adapter selon le fichier.
    num_ligne_fusion = 2  ' on commence l'écriture à la ligne 2 , on peut mettre les entetes sur la ligne 1
       For Each f1 In ActiveWorkbook.Worksheets
             If UCase(f1.name) <> feuille_fusion Then
                nb_lig_feuill = Worksheets(f1.name).Range("A65536").End(xlUp).Row
     
              For ligne = 1 To nb_lig_feuill
                 If Worksheets(f1.name).Cells(ligne, col_resumé).Value = "OUI" Then
                     Worksheets(feuille_fusion).Range("A" & num_ligne_fusion & ":H" & num_ligne_fusion).Value = Worksheets(f1.name).Range("A" & ligne & ":H" & ligne).Value
                     num_ligne_fusion = num_ligne_fusion + 1
                 End If
              Next
     
            End If
          Next f1
    End Sub

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Voici un code qui permet cela. Il faut adapter la plage à copier en fonction de tes besoins.

    Note aussi que ce code transfère les données de TOUTES les feuilles, hormis la feuille appelée "Résumé"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Transfert()
        Dim Feuille As Worksheet
        Dim Cellule As Range
     
        For Each Feuille In Worksheets
            If Feuille.Name <> "Résumé" Then
                For Each Cellule In Feuille.Range("a2:a" & Feuille.Range("a" & Feuille.Rows.Count).End(xlUp).Row)
                    If Cellule(1, 3) = "Oui" Then _
                        Range(Cellule, Cellule(1, 3)).Copy Worksheets("Résumé").Range("a" & Feuille.Rows.Count).End(xlUp)(2)
                Next Cellule
            End If
        Next Feuille
    End Sub
    Note la façon d'utiliser l'objet, et la façon générique de trouver la dernière cellule utilisée en A, qui permet l'utilisation du code tant en 2003 que dans les versions suivantes...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2007] [Débutant] Remplir un tableau à partir d’un autre tableau
    Par DerJul dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/07/2011, 11h37
  2. Problème de tableau 2d contenant un autre tableau
    Par maryooman dans le forum Langage
    Réponses: 2
    Dernier message: 23/01/2010, 11h26
  3. Réponses: 1
    Dernier message: 03/11/2008, 15h36
  4. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 09h27
  5. tableau qui englobe un autre tableau
    Par skea dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/12/2004, 13h58

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