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

Excel Discussion :

Regroupement et comptage articles nomenclature [XL-365]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Regroupement et comptage articles nomenclature
    Bonjour,

    Alors c'est peut-être la fatigue, mais je cherche à trier un tableau d'une liste de nomenclature comprenant les colonnes:
    Fabricant/Référence/Désignation/Quantité

    Chaque ligne contenant des données étant répétées plusieurs fois dans le tableau. Ex:

    Fabricant Référence Description commerciale Quantité
    SIEMENS 6ES7131-6BF00-0CA0 SIMATIC ET200SP, DI 8x24VDC HF, MODULE D'ENTREE 8E TOR 24VDC SINK INPUT (PNP) 2
    SIEMENS 6ES7131-6BF00-0CA0 SIMATIC ET200SP, DI 8x24VDC HF, MODULE D'ENTREE 8E TOR 24VDC SINK INPUT (PNP) 1
    SIEMENS 6ES7131-6BF00-0CA0 SIMATIC ET200SP, DI 8x24VDC HF, MODULE D'ENTREE 8E TOR 24VDC SINK INPUT (PNP) 3

    Si je veux le nombre de chaque référence, je n'ai plusieurs solutions, mais le résultat est que je n'obtient qu'un tableau à deux colonnes:
    Référence et Quantité (dont on fait la somme):

    Référence Somme de:Quantité
    6ES7131-6BF00-0CA0 6

    Je voudrais le résultat en tableau avec toutes ses colonnes et avoir la colonne quantité de références:

    Fabricant Référence Description commerciale Quantité
    SIEMENS 6ES7131-6BF00-0CA0 SIMATIC ET200SP, DI 8x24VDC HF, MODULE D'ENTREE 8E TOR 24VDC SINK INPUT (PNP) 6

    Je pense que c'est une fonction basique d'Excel mais là je sèche!

    Merci de votre aide

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Auditeur
    Inscrit en
    juillet 2012
    Messages
    8 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2012
    Messages : 8 392
    Points : 78 263
    Points
    78 263
    Billets dans le blog
    15
    Par défaut
    Salut,

    Une propostion avec transformation du tableau initiale en tableau structuré et création d'un TCD.

    Lorsque des données seront ajoutées, il faudra juste faire un clic-droit sur le TCD et actualiser pour les prendre en compte.

    Il faut noter également que cela est possible de le faire directement avec Power Query sans passer par un TCD.
    Fichiers attachés Fichiers attachés
    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.

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    décembre 2013
    Messages
    2 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 371
    Points : 4 130
    Points
    4 130
    Par défaut
    Bonjour,

    Selon les experts du site et surtout tu as XL-365 powerQuery est dédié pour ce genre de traitement (fortement recommandé)

    Si non une solution VBA

    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
    Sub testttt()
    Application.ScreenUpdating = False
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Set F1 = Sheets("BASE")
    Set F2 = Sheets("RESULTAT")
    F2.Cells.ClearContents
    Dim i As Long
    On Error Resume Next
    Set d = CreateObject("Scripting.Dictionary")
        TblBD = F1.Range("A2:D" & F1.Range("D" & Rows.Count).End(xlUp).Row)
        For i = 1 To UBound(TblBD)
        clé = TblBD(i, 1) & "|" & TblBD(i, 2) & "|" & TblBD(i, 3)
        d(clé) = d(clé) + TblBD(i, 4)
        Next i
     F2.Cells(1, 1) = "Fabricant"
     F2.Cells(1, 2) = "Référence"
     F2.Cells(1, 3) = "Description commerciale"
     F2.Cells(1, 4) = "Quantité"
     F2.Range("A2").Resize(d.Count) = Application.Transpose(d.keys)
     F2.Range("D2").Resize(d.Count) = Application.Transpose(d.items)
      Application.DisplayAlerts = False
      F2.Range("A2").Resize(d.Count).TextToColumns Other:=1, DataType:=xlDelimited, OtherChar:="|"
    Application.ScreenUpdating = True
    F2.Select
    End Sub
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 17 198
    Points : 49 585
    Points
    49 585
    Billets dans le blog
    92
    Par défaut
    Salut.

    Je plussoie Malick

    Power Query réalise cela en quelques clics intuitifs et le résultat est mis à jour par simple clic droit! Un tableau croisé dynamique est tout aussi simple à mettre en place (et ce truc existe depuis plus de 20 ans).

    Par rapport à une solution VBA, il n'y a pas photo, à mon avis, puisque cette solution
    • utilise VBA et impose donc le xlsm alors que ce n'est pas nécessaire;
    • utilise un scripting.dictionary alors que ce n'est pas nécessaire;
    • utilise mal le dictionary vu l'absence de test sur l'existence de la clé;
    • utilise un On Error Resume Next pour pallier le manque de test sur la clé, camouflant d'autres erreurs éventuelles;
    • n'utilise pas les tableaux structurés ce qui verrouille la solution aux cellules utilisées dans le code ();
    • utilise des données métier en dur dans le code;
    • utilise les noms d'onglets plutôt que les codename (alors que les tableaux structurés évitent de parler des feuilles ^^);
    • supprime toutes les données d'une feuille sans prévenir le demandeur alors que rien de tel n'a été demandé;
    • recompose par code des "tableaux" alors que cela devrait faire partie de la conception du classeur et, sauf à de très rares exceptions près non rencontrées ici, être réalisé en Excel et pas en VBA;
    • utilise Rows.Count sans parentalité, ce qui peut générer une erreur (qui sera masquée à cause du On Error Resume Next ^^);
    • impose deux Transpose, toujours coûteux;
    • impose un TextToColumns totalement inutile (car la concaténation des clés pour le dictionnaire est inutile, puisque le dico est inutile, et coûteuse);
    • sélectionne une feuille alors que ce n'est absolument pas demandé, et change donc l'interface utilisateur inutilement;
    • ...,




    Nom : 2021-02-26_120354.png
Affichages : 44
Taille : 200,0 Ko

    Nom : 2021-02-26_120656.png
Affichages : 44
Taille : 77,2 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    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...
    ---------------

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 17 198
    Points : 49 585
    Points
    49 585
    Billets dans le blog
    92
    Par défaut
    J'ose espérer que le moinsseur de mon message aura au moins eu la volonté d'apprendre quelque chose en le lisant et améliorera tant ses techniques Excel que ses techniques de programmation en VBA grâce à cela
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    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...
    ---------------

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Auditeur
    Inscrit en
    juillet 2012
    Messages
    8 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2012
    Messages : 8 392
    Points : 78 263
    Points
    78 263
    Billets dans le blog
    15
    Par défaut
    Salut à tous,

    Je pense qu'on gagnerait à utiliser Power Query associé aux Tableaux croisés Dynamiques pour faire des merveilles, cela tant que c'est possible. Le recours au VBA sera moindre.

    Lire sans à volonté :



    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.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Bonjour Pierre,

    Je suis tes posts sur le site depuis quelques années et j'ai beaucoup progressé en VBA et même développer plusieurs applicatifs pour mon travail.
    Je remercie aussi tous ceux qui ont répondu à ma question, quelle célérité!

    Intuitivement j'ai bien entendu commencé par utiliser un TCD mais ça me donnait le résultat que j'ai indiqué. Ensuite testé aussi Power Query sans plus de succès.
    Je voulais éviter de faire une macro VBA pour un truc 'basic', notamment lorsque tu utilises une base de données.
    Je vais lire attentivement ta réponse et faire un essai avec ce que tu me propose pour le transposer à mon tableau ensuite.

    Je reviens vers vous pour partager mon résultat.

    merci

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Merci pour votre aide
    Bonsoir,

    J'ai testé la méthode proposée par Pierre, c'est exactement ce que je cherchais. Le tout était de comprendre comment fonctionne Power Query.

    Merci encore pour votre aide

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

Discussions similaires

  1. [AC-2010] Regroupement et comptage sur des champs différents
    Par trouvaille dans le forum IHM
    Réponses: 5
    Dernier message: 26/10/2019, 14h10
  2. Requête de regroupement avec comptage
    Par guepard25 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/01/2015, 11h11
  3. Regroupement et comptage
    Par piem6586 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 23/07/2014, 18h06
  4. aide sur regroupement et comptage
    Par salluste dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/06/2014, 14h24
  5. Réponses: 2
    Dernier message: 26/06/2007, 13h27

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