Trouver 2 lignes du même client et les additionner

Résolu/Fermé
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018 - 29 avril 2016 à 19:26
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018 - 4 mai 2016 à 15:04
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

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
29 avril 2016 à 21:26
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
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018
Modifié par Ju@nita le 29/04/2016 à 21:30
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
29 avril 2016 à 22:14
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
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018
2 mai 2016 à 13:39
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
2 mai 2016 à 22:41
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
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018
3 mai 2016 à 14:23
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
3 mai 2016 à 18:50
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018
3 mai 2016 à 21:05
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
3 mai 2016 à 22:02
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
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018
4 mai 2016 à 15:04
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