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 :

[Tableau structuré] Amélioration code répartition tableau suivant colonne [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 312
    Billets dans le blog
    15
    Par défaut [Tableau structuré] Amélioration code répartition tableau suivant colonne
    Bonjour,

    Confronté à une situation à gérer rapidement, j'ai cherché sur le net et adapté le code ci-après qui me donne le résultat escompté :

    Code vba : 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
    Option Explicit
     
    Sub Repartition()
    Dim Dico, k, i
    Dim C As Range
    Dim n As Integer, LigneC As Integer
        Set Dico = CreateObject("Scripting.dictionary")
        Application.ScreenUpdating = False
        With Worksheets("DetailOperation")
            For Each C In Range("Tab_Operations[Ref]")
                If Not Dico.Exists(C.Value) Then Dico.Add C.Value, C.Offset(0, 1).Value
            Next C
            k = Dico.keys
            i = Dico.items
            For n = 0 To Dico.Count - 1
                LigneC = 5
                Sheets.Add After:=Sheets(Sheets.Count)
                ActiveSheet.Name = k(n)
                For Each C In Range("Tab_Operations[Ref]")
                    If C = k(n) Then
                        C.Offset(0, 1).Resize(, 7).Copy ActiveSheet.Range("A" & LigneC)
                        LigneC = LigneC + 1
                    End If
                Next C
            Next n
        End With
    End Sub

    Ce code, appliqué sur le tableau structuré ci-dessous, fait une répartition et crée une feuille pour chaque REF tout en copiant les données correspondant et se trouvant sur la même ligne.

    Nom : Capture.PNG
Affichages : 348
Taille : 179,3 Ko

    Le résultat que j'obtiens pour chaque REF :

    Nom : Capture1.PNG
Affichages : 351
Taille : 69,5 Ko

    Ma question

    Est-ce la meilleure façon de traiter ce genre de problème ? Surtout qu'il s'agit de tableau structuré avec ses propriétés ListObject et autres

    Comment améliorer ce code de façon à faire apparaître également les entêtes de chaque colonne ?

    Merci d'avance pour vos remarques.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour Malik,
    D'après ton llustration, il s'agit de splitter les données en fonction du contenu d'une colonne.
    Il est possible je crois de faire cela avec PowerQuery mais mes mes connaissances de cette fonctionnalités ne sont pas suffisantes pour t'aider

    Pour effectuer ce travail, je fais cela avec la méthode AdvancedFilter, voir mon explication sur le même sujet Comment splitter des données avec la méthode AdvancedFilter
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    BOnjour

    Il y a combien de ref ?

    Si le nombre est limité, PowerQuery le fera très bien. PowerQuery peut aussi être piloté via VBA à partir de 2016

    Sinon un filtre avancé automatisé mais j'ai toujours du mal à voir l'intérêt d'une démultiplication d'onglets.

  4. #4
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 312
    Billets dans le blog
    15
    Par défaut
    Salut,

    Merci Phillipe et 78chris pour vos retours

    Citation Envoyé par Philippe Tulliez
    Pour effectuer ce travail, je fais cela avec la méthode AdvancedFilter, voir mon explication sur le même sujet Comment splitter des données avec la méthode AdvancedFilter
    Je vais regarder cette possibilité.

    Citation Envoyé par 78chris
    Si le nombre est limité, PowerQuery le fera très bien.
    Effectivement j'ai mis en place quelque chose avec Power Query et un TCD sur la base de cette requête et cela marche aussi. Sauf que là je le ferais au besoin en filtrant le TCD sur la REF concernée.

    Citation Envoyé par 78chris
    PowerQuery peut aussi être piloté via VBA à partir de 2016
    Je ne savais pas cela, super Je m'y pencherai pour me documenter dessus.

    Je passe en

    Merci encore et bon week-end.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

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

Discussions similaires

  1. Tri de tableau suivant deux colonnes
    Par cedji dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/10/2013, 10h14
  2. [Smarty] Lister un tableau en colonnes
    Par Laurentq1970 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/01/2007, 10h50
  3. excel et tableau de colonne
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/01/2007, 16h42
  4. [XSL~FO] tableau à colonnes variables
    Par matts21 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/09/2006, 15h47
  5. Tableau -> Titre colonne (th) + saut de ligne ?!
    Par AceG dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 07/05/2005, 09h46

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