Trouver 2 lignes du même client et les additionner

Résolu
Ju@nita Messages postés 163 Date d'inscription   Statut Membre Dernière intervention   -  
Ju@nita Messages postés 163 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un fichier dans lequel j'ai une macro pour un tas de triage et j'aimerais incorporer une section pour traiter une petite exception rencontrée dans la liste de client. Dans le fichier joint, j'ai mis une petite section de mon résultat final. j'ai mis un client en jaune qui se retrouve 2 fois. Et c'est juste le client 3570 qui a ça. Comment incorporer dans ma macro un petit bout qui additionnerait les 2 lignes de ce client pour n'en garder qu'une svp ?

merci
https://www.cjoint.com/c/FDDrAmjlnDV

(excel 2010)

6 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    j'ai une macro pour un tas de triage et j'aimerais incorporer une section pour traiter une petite exception

    Comment veux-tu que l'on incorpore un traitement dans une macro dont l'on ignore tout ?
    0
  2. Ju@nita Messages postés 163 Date d'inscription   Statut Membre Dernière intervention   2
     
    y a trop de stock dedans. Mais l'exemple que j'ai mis, c'est lorsque la macro est terminée. Je veux juste rajouter à la fin de ma macro le truc pour combiner les 2 lignes de ce client.
    je reviendrai lundi matin.
    merci
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      Je veux juste rajouter à la fin de ma macro
      Il serait plus facile et plus judicieux de le faire à l'écriture de la ligne : si idem => cumuler.
      0
  3. Ju@nita Messages postés 163 Date d'inscription   Statut Membre Dernière intervention   2
     
    bonjour,

    je n'ai pas trop compris à quel endroit je dois inscrire cette formule.
    En fait, ce que j'ai envoyé était le résultat final après l'exécution d'une macro. Ça partait d'un fichier que je reçois qui contient tous les clients à facturer et ils sont tous dans la même feuille. Il y a des clients pour le plan A, le plan C et le plan E à facturer. La macro servait à mettre chaque plan dans une feuille séparée en faisant un filtre, puis copier coller dans des feuilles séparées. Donc, après avoir collé le plan C, j'aimerais mettre dans ma macro ce que tu proposes.
    Voici cette section de ma macro:
    'PLAN C
    ActiveSheet.Range("$A$6:$I$500").AutoFilter Field:=1, Criteria1:="C"
    Range("A1:I500").Select
    Selection.Copy
    Sheets("Feuil2").Select
    Sheets.Add
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    Range("A2").Select
    Sheets("Feuil2").Select
    Application.CutCopyMode = False

    peux-tu m'aider à compléter svp ?

    merci beaucoup.
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      Tu as choisis par macro la procédure de filtre que tu n'avais pas réussi à implémenter, il te faut donc boucler sur tes données et les cumuler lors d'identifiant identique en supprimant la ligne qui a été cumulée.

      Cependant tu peux avoir le même cas dans tous tes plans et donc ce serait préférable de le faire avant l'éclatement. Il te faudrait aussi faire un tri préalable pour être sûr que les identifiants se suivent bien.
      0
  4. Ju@nita Messages postés 163 Date d'inscription   Statut Membre Dernière intervention   2
     
    bonjour,

    j'aimerais préciser que je ne sais pas composer des macros directement dans le VBA. Je passe par "enregistrer une macro" et je procède avec les étapes voulues au fur et à mesure directement dans mon fichier. C'est pour ça que je ne sais pas comment compléter ma macro. Je prends les solutions proposées et je fais du copier/coller dans ma macro. Si tu pouvais juste m'écrire ce que ça prend, je pourrais le copier svp. Ce serait très apprécié.

    merci
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      En fonction de ton exemple cela peut donner cette séquence à placer de préférence avant la séparation du classeur initial.
      Dim lig As Long
      For lig = 7 To ActiveSheet.UsedRange.Rows.Count
          If Cells(lig, "B").Value = Cells(lig - 1, "B").Value Then
              Cells(lig - 1, "C").Value = Cells(lig - 1, "C").Value + Cells(lig, "C").Value
              Cells(lig - 1, "D").Value = Cells(lig - 1, "D").Value + Cells(lig, "D").Value
              Cells(lig - 1, "G").Value = Cells(lig - 1, "G").Value + Cells(lig, "G").Value
              Rows(lig).Delete
          End If
      Next lig
      

      Il est bien évident que si ton classeur n'est pas trié sur "Plan /No" cela ne fonctionnera pas.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ju@nita Messages postés 163 Date d'inscription   Statut Membre Dernière intervention   2
     
    salut, ça n'a pas marché.J'ai incorporé ton bout de macro dans la mienne, juste avant le split, j'ai exécuté la macro et au bout d'une minute, j'ai dû faire "escape" pour l'arrêter. Le bug s'est arrêté à "end if".
    sais-tu pourquoi ???
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      Sans doute que ton classeur a beaucoup de lignes utilisées mais vides.
      Si tu fais ctrl+fin sur ton classeur tu as quelle ligne d'affichée ?

      Remplace la ligne 2 ci-dessus par celle-ci
      For lig = 7 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
      
      0
  7. Ju@nita Messages postés 163 Date d'inscription   Statut Membre Dernière intervention   2
     
    pour ta première question, si je fais ctrl-fin, j'arrive à la cellule AM45394. Qu'est-ce que ça veut dire ?
    Mais j'ai remplacé la ligne 2 par la nouvelle et ça fonctionne très bien.
    Donc, la première question ne se pose plus, je pense bien :)

    merci beaucoup, t'as résolu mon problème.

    bonne journée.
    0