VBA fusionner les doublons et additionner les quantités
Bonjour à tous !
Avant toute chose, je ne m'y connais pas du tout en macro VBA. Je commence à peine à apprendre pour le boulot
Je vous explique mon problème, je souhaiterais fusionner les doublons des colonnes A à I. Puis fusionner les doublons des colonnes JKLM en fonction des codes articles. (c'est pas très clair donc je vous donne un exemple.) Admettons que j'ai 2 articles "1" et "2" et que pour ces 2 articles j'ai une seule et même date d'entrée par exemple le 11/08/2020 , je voudrais que mon fichier puisse me dire que l'article "1" à une entrée le 11/08 2020 et l'article "2" à une entrée le 11/08/2020.
Et enfin pouvoir additionner mes quantités (colonne N et O).
J'ai essayé de faire un petit quelque chose grâce à un code que j'ai trouvé sur internet mais ça ne fonctionne pas... N'ayant pas de connaissances dans ce domaine, je vous sollicite donc avoir un peu (beaucoup
Je vous joins mon fichier cela vous paraitra peut être plus clair.
Merci d'avance pour vos réponses !
Salut,
Je crois que la seule chose que j'ai comprise est que ton problème se situe sur la feuille ''exemple''.
Sur cette base, indique nous un ou deux exemples au maximum de ton problème en faisant référence aux objets Excel. Par exemple tu indiques : "aux lignes x à y, j'ai plusieurs fois la même référence dans la colonne A. Je voudrais donc ne laisser qu'une de ces x lignes".
Mais effectue également une copie de cette feuille - que tu pourrais renommer ''Tel que souhaité'' et tu modifies manuellement cette feuille avec le résultat attendu.
Attention, pour tes explications, reste sur le présent fil, ne mets pas d'explication directement dans ton fichier.
Je trouve un peu bizarre que tu traites séparément les données des colonnes A à I et J à M. Si c'est bien le cas, si c'est nécessaire, commence éventuellement par le premier problème (celui des colonnes A à I par exemple) de manière à ce que l'on se mélange pas les pinceaux entre les différentes parties de tes soucis.
Amicalement.
Bonjour Yvouille,
Je te remercie pour ta réponse !
Tu trouveras ci joint mon fichier. Les 4 premiers onglets sont des bases de données ou je vais chercher des informations que je regroupe dans l'onglet "analyse". J'ai mis un exemple de ce que je souhaiterais avoir dans l'onglet "tel que souhaité".
Mon but est d'automatiser l'onglet "analyse" en y important mes BDD externes.
Mon exemple que tu trouveras dans l'onglet "tel que souhaité" se base sur les lignes 6 à 41 de l'onglet "analyse".
Merci encore.
Salut,
Aucune de tes nouvelles feuilles se nomme ''Tel que souhaité''.
Je t'ai dit que je pensais que ton problème était sur la feuille ''Exemple'', mais tu parles maintenant de la feuille ''Analyse''. Est-ce que tu veux reprendre des données de la feuille ''Analyse'' sur la feuille ''Exemple'' ou est-ce que tu veux transformer la feuille ''Analyse'' en fonction de la future feuille ''Tel que souhaité'' que tu me fourniras ?
Je t'avais demandé de donner UN ou DEUX exemples au maximum et d'expliquer pourquoi les résultats indiqués sur la feuille ''Tel que souhaité'' étaient ainsi.
S'il s'agit de regrouper les données sur la feuille ''Analyse'' elle-même, effectue une copie de cette feuille complète que tu renommeras ''Tel que souhaité'' et indique sur ce fil pourquoi l'exemple (ou les deux exemples) fournis sont modifiés de la sorte.
A te relire.
Salut,
Le dernier fichier que j'ai joint n'était pas le bon...
Pour faire plus simple, je voudrais juste fusionner tous mes doublons pour faire plus "propre" sauf les doublons de la colonne J (Date d'EM) de l'onglet "Analyse".
Puis additionner les quantités colonne N (Quantité) et O (Quantité en palette) de l'onglet "Analyse".
Comme je disais, c'est bien la feuille "Analyse" que je veux automatiser et rien d'autre. Les autres feuilles sont juste des imports ou je récupère mes données pour justement former ma feuille "Analyse".
Je t'ai mis juste un exemple dans la feuille "TEL QUE SOUHAITE" comme tu m'as demandé.
NB : Sur l'onglet "TEL QUE SOUHAITE" je n'ai pas copié les colonnes masquées, n'y prête pas attention, c'était juste pour te donner un exemple de ce que je veux.
Je te remercie pour ta patiente !
On ne peut pas vraiment dire que tu te donnes de la peine à m’aider à t’aider ! Tu ne fais (presque) rien de ce que je te demande.
J’avais demandé que tu copies la feuille complète à traiter et que tu fournisses un ou deux exemples et tu me fournis une feuille avec jusque quelques lignes et – quelle horreur – avec des colonnes manquantes !! Pour comparer les deux feuilles, c’est carrément la ….., enfin, c’est carrément difficile. De plus, tu ne donne aucune explication à propos de tes modifications !! A moi de deviner !!!!
Dans le fichier ci-joint, j’ai donc copié la feuille à traiter – j’ai bien compris maintenant qu’il s’agissait de la feuille ‘’Analyse’’ et je l’ai renommée ‘’Analyse Bis’’. Sur ta feuille ‘’Tel que souhaité’’, j’ai ajouté les colonnes manquantes afin que la colonne I corresponde à la colonne I, que la colonne J corresponde à la colonne J, etc., ce qui me semble plus simple et plus logique.
Ayant remarqué que ta feuille ‘’Analyse’’ comporte 8 lignes avec la référence 1940 aux lignes 34 à 41 et que ton exemple comportait 8 lignes avec la même référence, j’ai pensé qu’il s’agissait des mêmes lignes et que tes deux lignes 24 et 25 de la feuille ‘’Analyse’’ étaient traitées séparément malgré qu’elles ont la même référence elles aussi. J’ai alors copié tes 8 lignes de la feuille ‘’Tel de souhaité’’ et les ai collées aux lignes 34 à 41 de ma feuille ‘’Analyse Bis’’. Les colonnes masquées sont prises en compte dans le collage et la colonne I correspond toujours à la colonne I, etc.
Au début ça me paraissait bien, mais j’ai eu un choc à la colonne K car je n’ai pas compris immédiatement d’où venaient les dates ‘’18.09.2020’’. Puis j’ai remarqué qu’en fait tu sembles traiter toutes les lignes contenant la même référence en colonne A, MAIS ALORS – SI LES DEUX LIGNES 24 ET 25 DE LA FEUILLE ‘’ANALYSE’’ CORRESPONDENT BIEN AUX LIGNES 40 ET 41 DE LA FEUILLE ‘’ANALYSE BIS’’ - COMMENT DECIDES-TU QUELLES SONT LES 6 LIGNES PARMI LES LIGNES 34 à 41 DE LA FEUILLE ‘’ANALYSE’’ QUI SONT PRISES DANS LES LIGNES 34 à 39 DE LA FEUILLE ‘’ANALYSE BIS’’ ou aux lignes 8 à 13 de la feuille ‘’Tel que souhaité’’ ?????????????????
Vachement peu clair, tout ça
Comme le fichier ne passait plus car trop gros, j'ai enlevé les lignes 51 et suivantes des feuilles ''Analyse'' et ''Analyse Bis''.
Amicalement.
Salut,
Désolé, il est vrai que ma demande de clarté mais j'ai du mal à m'expliquer car je n'ai pas beaucoup de connaissance sur Excel.
Tu as bien saisi mon problème,.
En effet, je veux fusionner TOUS mes doublons mais ils ne sont pas tous regroupés comme tu peux le voir avec mon code article "1940", certains sont plus haut, d'autres plus bas... L'objectif est donc de tous les fusionner ensembles.
Et oui comme tu dis, " LES DEUX LIGNES 24 ET 25 DE LA FEUILLE ‘’ANALYSE’’ CORRESPONDENT BIEN AUX LIGNES 40 ET 41 DE LA FEUILLE ‘’ANALYSE BIS’’ ".
Donc, pour faire un petit récapitulatif, l'objectif est de fusionner tous mes doublons (mis à part ma colonne J) et d'additionner ma colonne N ainsi que ma colonne O.
Après pour être honnête je n'ai aucune idée de comment faire, c'est pour ça que j'ai du mal à t'expliquer... C'est déjà pas clair pour moi, alors pour toi, j'imagine bien...
En tout cas, je te remercie encore une fois pour ta patience !!!
Amicalement.
Donc en finale, des 10 lignes avec la référence 1940, tu veux 10 lignes et non pas 8 comme dans ton exemple ?
Selon moi la réponse et oui, mais j'aimerais avoir ta confirmation. Si j'ai tors, explique-moi quelles lignes doivent être ignorées sur les 8 des lignes 34 à 41.
Suite à ta confirmation, il faudra être un peu patiente, car je n'ai plus le temps de m'occuper de cela avant vendredi ou dimanche.
C'est bien ça !
Je te remercie beaucoup !
J'attends donc ta réponse avec impatience !
Excellente soirée à toi !
Salut,
Je voulais attaquer ton problème ce soir mais il y a un truc qui me fait souci. J'ai l'impression que ta feuille ''Analyse'' n'est pas la feuille la plus basique possible, mais que tu as déjà commencé à modifier les données primaires. Je pense à ça en voyant des cellules fusionnées en colonne B alors que les cellules de la colonne A ne le sont pas encore.
Il serait plus simple pour moi de partir de la base de données la plus brute qu'il soit, avant la mise en couleur des lignes, avec la fusion de cellules, etc.
Peux-tu donc me fournir une telle feuille de base ? Sinon, si ta feuille ''Analyse'' est vraiment la feuille la plus brute possible, je vais tenter de m'en accommoder.
A te relire.
Bonjour,
Tu trouveras ci-joint le fichier.
Merci encore et bonne journée à toi !
Salut,
Dans le fichier ci-joint, j'ai placé un bouton sur la feuille ''Analyse'', en B1. Si tu cliques dessus, une copie de cette feuille est créée et renommée ''Copie 1'', ''Copie 2'' et ainsi de suite.
Sur ces nouvelles feuilles, tu devrais avoir une bonne partie de ce que tu souhaites. Pour ce qui manque, on avisera
Afin de facilité les choses, j'ai enlevé les filtres de la colonne L. Ainsi les lignes masquées sur ta feuille de base sont visibles à la fin du code (par exemple les lignes 4 et 5, 118 à 120, etc.). Je n'ai pas voulu les masquer d'une manière quelconque en finale, mais je n'ai pas non plus vraiment compris – je n'ai pas non plus cherché très longtemps – comment tu avais filtré cette colonne. Ainsi, si c'est ton souhait que ces lignes soient à nouveau filtrées selon ta manière, explique-la-moi et je vais tenter de l'inclure à la macro. En revanche, si cela t'est un peu égal comment elles sont masquées, pourvu qu'elles le soient, je le fais à ma manière.
Tu m'as demandé de fusionner les cellules de la colonne M, mais les valeurs des lignes de cette colonne peuvent être différentes même si la même date est inscrite dans la colonne K (par exemple, en M20:M37 tu as plusieurs valeurs qui ne se retrouvent plus dans la cellule fusionnée de la feuille ''Copie''. Ne faudrait-il donc pas ne pas fusionner cette colonne ????
L'idée générale est que tu places sur cette feuille ''Analyse'' les données à traiter – en dessous de la ligne 2, ne change pas ces deux premières lignes – et que tu lances la macro.
A nouveau, si ce n'est pas ce que tu souhaites, indique-moi clairement ton souhait.
Chaleureusement.
Salut,
Je te remercie d'avoir pris de ton temps !
Par contre, lorsque j'appuie sur le bouton "transformation" rien ne se passe. Aucunes feuilles ne sont créées.
Un message d'erreur s'affiche : "Erreur de compilation: Argument nommé déjà spécifié". Je ne sais pas quoi faire avec ce message.
La je ne suis pas chez moi, j'ai donc ouvert le fichier avec un Mac. Tu penses que ça peut venir de la ?
Bonne soirée à toi.
Il se peut que les options de sécurité des macros soient définies sur cette machine de manière à ce que ça ne te demande pas même pas si tu veux accepter les macros, que ça les désactive d'office ! Dans ce cas-là, il faudrait aller modifier ces options de sécurité. Si la question t'est posée de savoir si tu acceptes les macros, tu dois bien entendu dire oui. Essaie éventuellement sur une autre machine, éventuellement non mac. Mais bon, ces macros doivent également fonctionner sur mac.
Dans tous les cas, télécharge le fichier et enregistre-le sur ta machine avant de faire des essais. Lorsque tu fais des essais alors que le fichier est encore sur un nuage, ça peut créer des problèmes.
J'ai créé cette macro sur mon PC au boulot et me suis envoyé le fichier à la maison où je l'ai enregistré sur ton fil. Sur mes deux machines, ça fonctionne (et plutôt bien
Salut,
C'est bon j'ai réussi, je pense que le soucis venait de ça : "Order1:=xlAscending, Header:=xlNo" qui était en double sur la même ligne.
C'est super ce que tu m'as fait, je suis super content !
Juste une petite remarque : dans la colonne L (formule K-J) il y a une problème, la formule ne s'applique pas (ou mal) avec les cellules fusionnés (ça me donne un chiffre négatif). Le but de cette colonne est de calculer l'écart de jours entre K et J. Peux-tu faire quelque chose ?
Penses-tu qu'il est possible d'appliquer la macro directement sur sur l'onglet "analyse" sans créer de d'autres feuilles ?
Encore un petit truc
Merci beaucoup pour ton aide en tout c'est génial !
Salut,
Selon moi, la ligne de tri Range("A3:Q" & DerLig).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlNo, Key2:=Range("K3"), Order1:=xlAscending, Header:=xlNo a toute sa raison d’être, elle ne créé pas de problème sur mes machines et si tu la tronques, le résultat risque d’être incorrect. A ta place, je la laisserais comme elle est. Ton problème venait très certainement d’ailleurs.
En fait, cette ligne paraît peu utile, puisque tes lignes semblent déjà triées dans l’ordre ‘’Colonne A / Colonne K », mais je la laisserais quand même au cas où les données à traiter n’étaient pas – à une certaine occasion - déjà triées. Cette ligne de code ne mange pas de foin, il n’y a pas de raison de l’enlever et il me semble dangereux de la modifier.
Tu as, dans ta base de données, des lignes masquées qui comportent des résultats négatifs en colonne L, par exemple les lignes 4 et 5. Je t’ai signalé que la macro ouvrait ces lignes mais ne les refermait pas et que j’attendais tes instructions à ce sujet, c’est-à-dire quant à savoir si tu souhaitais filtrer ces lignes de la même manière que précédemment ou si on les refermait d’une autre manière. Alors ? Je pense que si tu avais bien lu mes instructions, tu n'aurais pas eu besoin de poser ta question à ce sujet.
Je trouvais que de créer une nouvelle feuille – une copie - permettait de mieux comparer les résultats, d’avoir toujours la base de données sous la main au cas où, etc. De plus, cette copie pourrait être renommée (automatiquement ou manuellement) comme tu l’entends, être déplacée dans un autre fichier (automatiquement ou manuellement), etc. Réfléchis donc encore un peu à ce propos et donne-moi ta décision finale. La macro sera modifiée en fonction de tes envies.
Pour ce qui est de colorier une ligne sur deux, ce n’est pas un gros problème, mais je présume que tu veux plutôt colorier un groupe ‘’Code article’’ sur deux (par exemple la ligne 15 en gris, les lignes 16 et 17 en blanc, les lignes 18 et 19 en gris, les lignes 20 à 37 en blanc, etc.) ou bien ?
A te relire.
Salut,
Je prends note pour le code. Laisse tomber pour la colonne L, c'était une remarque inutile. Vu qu'elle est masquée inutile de la toucher, a moins que tu es le temps de la fusionner.
Oui, pourquoi pas l'ouvrir dans un dossier à part et je le renommerai manuellement, c'est une bonne idée.
Et oui, pour la couleur c'est exactement ça !
Merci à toi.
Tu n’es pas très précis dans tes souhaits ; lorsque tu me dis que je peux bien faire ceci ou cela, je trouve que ce n’est pas à moi de décider.
Dans le fichier ci-joint, si tu cliques sur le bouton déjà connu ‘’Transformation’’, un nouveau fichier est créé et renommé avec la date, l’heure, les minutes et les secondes, de manière à ce que tu puisses faire plusieurs essais de suite sans qu’Excel te dise : « Ce fichier existe déjà voulez-vous le remplacer ».
Ce nouveau fichier est enregistré au même emplacement que le fichier de base, les lignes masquées préalablement sont masquées à nouveau à la fin et les lignes des différents ‘’Code article’’ sont marquées en gris et blanc.
A te relire.
Super, c'est vraiment top ce que tu m'as fait !
Je te remercie pour l'aide que tu m'as apporté ! Je vais essayer de décortiquer ça et de comprendre pour pouvoir le refaire sur d'autres fichiers
Excellente journée à toi !