Additionner des "doublons"

Tok-Ra

XLDnaute Junior
Bonjour à tous,

Cela faisait un moment que je n'étais pas venu vous voir !
Je viens car j'ai un nouveau projet et je ne sais pas par quel bout le commencer :(

Je vous explique le principe :

Tout les jours, quelqu'un fera un export Excel d'un progiciel, cet export se présentera sous la forme du fichier que je vous joins dans le post.
Comme l'export se fera tout les jours, dans la colonne B (Date de création) la date sera toujours la date de la veille.

Ce que j'aimerais pouvoir faire, c'est ouvrir un fichier qui aille lire ce fichier export et qu'il puisse me calculer le nombre de tickets en fonction du SM N°.

Comme c'est une mise en place, je n'ai pas d'historique, mais dès le lancement en production du fichier, celui-ci devra être capable, en plus de cumuler le nombre de tickets en fonction du SM N°, d'additionner les cumuls qu'il avait déjà fait avant.

Je ne sais pas si je suis très clair !

Maintenant, concernant l'aide, pour aller ouvrir le fichier export, lire les infos dedans et tout, y'a pas de soucis, je peux le faire, la ou je bloque car je ne sais pas trop dans quel sens m'y prendre, c'est de considérer que :

- Chaques lignes avec un SM N° de 727 doit représenter "1" et s'additionner, par exemple, dans le fichier joins, j'ai 11 lignes avec un même SM N°, on considère donc que le 727 a 11 ticket à son actif.

- Il faut aussi prendre en compte qu'il y'a des centaines de SM N° qui existe

Merci à vous d'avoir pris le temps de me lire ;)

PS : J'ai une grosse préférence pour le VBA, ne maitrisant pas assez les formules, merci ;)
 

Pièces jointes

  • Etat des tickets.xls
    19.5 KB · Affichages: 62
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Additionner des "doublons"

Bonjour Tok-Ra,
Regarde si cela peut t'aider.
En cas de problème on peux voir à adapter, avec quelques infos en plus.
VB:
Private Sub CommandButton1_Click()
Dim Dico As Object, Plg As Variant, I&
Set Dico = CreateObject("Scripting.Dictionary")
With Sheets("Etat des tickets")
    Plg = .Range(.Cells(2, 3), .Cells(Rows.Count, 3).End(xlUp)).Value
    For I = 1 To UBound(Plg, 1)
        Dico(Plg(I, 1)) = Dico(Plg(I, 1)) + 1
    Next I
    With .Cells(2, 6).Resize(Dico.Count, 1)
        .Value = Application.Transpose(Dico.Keys)
        .Offset(0, 1) = Application.Transpose(Dico.Items)
    End With
End With
End Sub
Cordialement
 

Pièces jointes

  • Etat_des_tickets(2).xls
    26 KB · Affichages: 77

Tok-Ra

XLDnaute Junior
Re : Additionner des "doublons"

Salut Efgé,

Merci pour la rapidité et la fonctionnalité de ta réponse.

Effectivement, c'est exactement ce qu'il me faut.
J'aurais par contre une petite requête, en effet, comme je l'ai expliqué, le fichier d'exportation sera différent chaques jours et il faut donc que je puisse additionné le nombre de tickets déjà cumulé.

Mais ça ne doit pas être bien compliqué, il suffit de stocker les resultat que donne ta macro et de les aditionné avec les nouveaux.
 

Efgé

XLDnaute Barbatruc
Re : Additionner des "doublons"

Re
Un proposition.
La feuille recap simule le fichier d'arrivée.
VB:
Private Sub CommandButton1_Click()
Dim Dico As Object, Plg As Variant, PlgRecap(), I&, J&
Set Dico = CreateObject("Scripting.Dictionary")
With Sheets("Etat des tickets")
    Plg = .Range(.Cells(2, 3), .Cells(Rows.Count, 3).End(xlUp)).Value
End With
For I = 1 To UBound(Plg, 1)
    Dico(Plg(I, 1)) = Dico(Plg(I, 1)) + 1
Next I
With Sheets("Recap")
    If .Cells(Rows.Count, 2).End(xlUp).Row > 1 Then
        PlgRecap = .Range(.Cells(2, 1), .Cells(Rows.Count, 2).End(xlUp)).Value
        For J = 1 To UBound(PlgRecap, 1)
            Dico(PlgRecap(J, 1)) = Dico(PlgRecap(J, 1)) + PlgRecap(J, 2)
        Next J
    End If
    With .Cells(2, 1).Resize(Dico.Count, 1)
        .Value = Application.Transpose(Dico.Keys)
        .Offset(0, 1) = Application.Transpose(Dico.Items)
    End With
End With
End Sub
.
Cordialement
EDIT Changement du code (plus logique sans les allers / retours)
 

Pièces jointes

  • Etat_des_tickets(3).xls
    40 KB · Affichages: 64
Dernière édition:

Tok-Ra

XLDnaute Junior
Re : Additionner des "doublons"

Re,

C'est exactement ce qu'il me fallait !
Merci beaucoup !

Bon j'ai un peu (beaucoup !) de mal à comprendre ta manière de coder :
- utilisation des "Cells"
- Application.Transpose
- Scripting.Dictionary
etc...

C'est des codes que je n'ai jamais vu ni utilisé, je vais essayer d'en décrpyter le fonctionnement !

En tout cas, un grand merci à toi !!
 

Discussions similaires

M
Réponses
9
Affichages
513
Maikales
M
  • Question
Microsoft 365 Formules
Réponses
2
Affichages
456

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz