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 :

Suppression ligne avec doublon et addition


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut Suppression ligne avec doublon et addition
    Bonjour à tous, je fais à nouveau appel à votre aide.

    Voici mon besoin : Je souhaite supprimer les lignes où la valeur en colonne C est identique pour n'en garder qu'une, mais dans un même temps, chacune des lignes contient une quantité, donc la ligne restante devra avoir le total. Voici un exemple :
    Départ :
    Article Quantité
    IAC1008806 3
    IAC1008807 3
    IAC1008806 3
    IAC1008808 3
    IAC1008807 3
    IAC1008806 3

    Résultat :
    Article Quantité
    IAC1008806 9
    IAC1008807 6
    IAC1008808 3

    Merci de votre aide

  2. #2
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut re
    Hello,

    Un chouette petit code que j ai trouvé il y a quelques temps
    Qui permet de faire ce que tu souhaites je pense

    Bat

    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
     
    Sub CombineRows()
    'Update 20130829
    Dim WorkRng As Range
    Dim Dic As Variant
    Dim arr As Variant
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
    Set Dic = CreateObject("Scripting.Dictionary")
    arr = WorkRng.Value
    For i = 1 To UBound(arr, 1)
        Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
    Next
    Application.ScreenUpdating = False
    WorkRng.ClearContents
    WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
    WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
    Application.ScreenUpdating = True
    End Sub
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    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 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonsoir
    je sais pas la finalité de ton travail mais je crois que garder tes lignes sans les supprimer et insérer un tableau croisé dynamique avec des segments , les articles comme étiquettes de lignes et les quantités en valeur et tu aura ce que tu cherches
    si tu insistes sur VBA penses à envoyer sur une autres feuilles au lieu de supprimer les lignes
    BONNE CONTINUATION
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    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
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par mfoxy Voir le message
    Hello,

    Un chouette petit code que j ai trouvé il y a quelques temps
    Qui permet de faire ce que tu souhaites je pense

    Bat

    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
     
    Sub CombineRows()
    'Update 20130829
    Dim WorkRng As Range
    Dim Dic As Variant
    Dim arr As Variant
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
    Set Dic = CreateObject("Scripting.Dictionary")
    arr = WorkRng.Value
    For i = 1 To UBound(arr, 1)
        Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
    Next
    Application.ScreenUpdating = False
    WorkRng.ClearContents
    WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
    WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
    Application.ScreenUpdating = True
    End Sub
    Merci pour ta réponse J'ai testé et je ne comprends pas le code... Que fait cette macro? Elle ne m'a supprimé que la cellule que j'ai renseigné dans la box qui s'affiche...

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    Bonsoir
    je sais pas la finalité de ton travail mais je crois que garder tes lignes sans les supprimer et insérer un tableau croisé dynamique avec des segments , les articles comme étiquettes de lignes et les quantités en valeur et tu aura ce que tu cherches
    si tu insistes sur VBA penses à envoyer sur une autres feuilles au lieu de supprimer les lignes
    BONNE CONTINUATION
    Bonjour j'y ai pensé mais la finalité doit être une liste à imprimer pour de la préparation de commandes. Après avoir supprimer les lignes je vais faire une recherche d'emplacements complexe suivant les quantités nécessaires et les quantités dispos aux emplacements. Avec un croisé dynamique je pense être bloquée.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour
    @mmarpaud

    en bouclant sur les cellule de ta colonne A et metant les references dans ses clés et la valeur de la cellule offset(0,1) d'un dico tu obtiens simplement ce que tu a demandé
    a savoir une liste sans doublons et les valeur additionnées dans les items

    autrement dit il faut voir un dico comme un variable tableau de 2 colonnes (col1 les references, col2 les valeurs )
    comme un dico n'accepte pas les doublons de lui meme cette ligne n'ajoute pas d'item au dico mais ajoute la valeur a celle qui y est deja ,si il n'y est pas il ajoute la reference et sa valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for x= 1 to ...
    dico(cells(x,y))=dico(cells(x,y))+cells(x,y+1)
    next
    c'est pas plus compliqué que ca
    il ne te reste plus qu'a transposer tes keys/items ou tu veux dans le sheets si tu veux garder sinon annalyser dans le dico en VBA selon tes besoins
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Bonjour patricktoulon,

    Merci de votre aide. Je ne connais pas cette fonction d'Excel. Pouvez-vous m'en dire plus? Sur mon fichier je dois comparer les valeurs des cellules en colonne C à partir de la ligne 7, et si doublon, additionner les quantités de la colonne E.
    J'ai fait des recherches sur internet mais ca ne m'a pas franchement aidé...

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    déjà réalisable simplement juste avec les fonctionnalités d'Excel et donc sans code !
    Évidemment via l'Enregistreur de macro, c'est automatisable …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre du Club
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Bonjour,

    déjà réalisable simplement juste avec les fonctionnalités d'Excel et donc sans code !
    Évidemment via l'Enregistreur de macro, c'est automatisable …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    Bonjour Marc-L, oui pour la partie de vérifier si l'article suivant est identique je peux le faire avec un VRAi/FAUX, mais pour additionner les quantités seulement si c'est le cas, je n'ai pas d'idée. Et vous? merci

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Merci de ne pas quoter l'intégralité du message juste précédent, aucun intérêt à part nuire à la lisibilité !

    Solutions niveau débutant :

    • Une entièrement par formules mais comme ici c'est le forum VBA (cf règles du forum) …

    • Une autre simple & manuelle et donc automatisable (et en deux lignes de code !) :

    - Créer la liste des articles sans doublon via un filtre avancé (voir l'aide Excel interne et le tutoriel du forum).

    - Appliquer à droite de cette liste une simple formule de calculs SOMME.SI …

    S'entraîner déjà manuellement donc ne requérant aucune compétence de codage VBA.
    Une fois le résultat désiré obtenu, recommencer entièrement les manipulations après
    avoir activé l'Enregistreur de macro :   une base de code est livrée sur un plateau !

    En consultant l'aide VBA interne suite à ce code ainsi généré, il est possible alors de le nettoyer …
    Évidemment en cas de doute, le poster dans cette discussion, on se fera un plaisir de l'optimiser !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut re
    Citation Envoyé par mmarpaud Voir le message
    Merci pour ta réponse J'ai testé et je ne comprends pas le code... Que fait cette macro? Elle ne m'a supprimé que la cellule que j'ai renseigné dans la box qui s'affiche...
    Hello,

    Avec le code que je t ai fournis il ne faut pas sélectionner une cellule mais la plage à traiter sur max deux colonnes.
    Par exemple A2:B50

    Cependant, je ne peux que te conseiller vivement de suivre les conseils et pistes donné par Marc et Patrick , qui sont bien plus compétent que moi

    Bat
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  12. #12
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonsoir,

    C'est un sujet déjà traité en vba x fois en vba sur ce forum, déjà avec un code fait dans un post par @Marc-L
    et aussi sur qq post que j'ai traités dont le code que j'avais est sur la base du code de Marc-L (coucou ).
    ces codes permettent de faire exactement ce que tu veux …
    Celui que j'avais fait permet une sélection de 1 à x critères, ceux-ci représentant par concaténation (si besoin) les doublons, et permet d'additionner et de supprimer les lignes

    avec un petite recherche sur ce forum tu devrais tomber dessus (voir même sur google avec les bons mots clés)

    Voilà

    PS : il était même possible sans code de le faire avec un tableau croisé dynamique :

    Nom : TCD.png
Affichages : 1285
Taille : 35,0 Ko
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  13. #13
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Salut Ryu !

    Oui je n'ai pas le réflexe, bien vu pour le TCD !  
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  14. #14
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Points : 2
    Points
    2
    Par défaut AIDE PLEASE
    Bonjour,

    Si je part de ton code:
    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
    Sub CombineRows()
    'Update 20130829
    Dim WorkRng As Range
    Dim Dic As Variant
    Dim arr As Variant
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
    Set Dic = CreateObject("Scripting.Dictionary")
    arr = WorkRng.Value
    For i = 1 To UBound(arr, 1)
        Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
    Next
    Application.ScreenUpdating = False
    WorkRng.ClearContents
    WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
    WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
    Application.ScreenUpdating = True
    End Sub
    Admettons que le tableau soit de cette manière

    A B C D
    NOM CODE DESIGNATION QUANTITE
    TOTO 2334 FRomage 1
    TOTO 2335 BEURRE 1
    TATA 2334 FRomage 1
    TATA 2335 BEURRE 1

    je souhaite qu'il supprime les doublons de la colonne B et qu'il additionne les quantités D, pour avoir au final


    A B C
    CODE DESIGNATION QUANTITE
    2334 FRomage 2
    2335 BEURRE 2

    Merci de ton aide

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

Discussions similaires

  1. [XL-2003] Macro suppression ligne avec condition 3 mots
    Par jenifer699 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2012, 17h45
  2. [XL-2003] Recherche et suppression ligne avec condition
    Par jeromeph75 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2011, 10h31
  3. [AC-2000] Suppression ligne avec conditions sur deux tables
    Par Loufink dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 09/07/2009, 11h38
  4. update sur ligne avec doublon
    Par nicerico dans le forum Requêtes
    Réponses: 9
    Dernier message: 08/11/2008, 17h13
  5. Supprimer lignes avec doublons avec 2 conditions
    Par dan-12 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/03/2008, 09h44

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