Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

soustration - différence par dico

gosselien

XLDnaute Barbatruc
Bonjour à tous,

Je cherche à obtenir par tableau ou dico ( dico de préférence si c'est possible dans ce cas - je ne maitrise toujours pas la bête ), la liste des occurences uniques de la colonne A avec à côté, la différence entre le max et une autre valeur pour cette même personne ex: patrick 1000 et 900 , ce qui donnera donc dans mon exemple:
patrick: 100 - jacques: 1200 - etc etc...

Il n'y a à chaque fois que 2 données pour ou même personne et je cherche donc à trouver la différence.

Ceci pour le faire dans un très grand nombre de données et éviter une formule gourmande en ressource

Merci
 

Pièces jointes

  • différence par tblo ou dico .xlsm
    19.5 KB · Affichages: 24
  • différence par tblo ou dico .xlsm
    19.5 KB · Affichages: 22

thebenoit59

XLDnaute Accro
Re : soustration - différence par dico

Bonjour gosselien.

Une méthode sur le tableau joint, avec dictionary comme tu préférais.
J'espère répondre à ta demande.
 

Pièces jointes

  • différence par tblo ou dico .xlsm
    21.1 KB · Affichages: 30
  • différence par tblo ou dico .xlsm
    21.1 KB · Affichages: 26

jpb388

XLDnaute Accro
Re : soustration - différence par dico

Bonjour à tous,thebenoit59

avec dictionary mais différent de thebenoit59
 

Pièces jointes

  • différence par tblo ou dico .xlsm
    21.5 KB · Affichages: 30
  • différence par tblo ou dico .xlsm
    21.5 KB · Affichages: 30

gosselien

XLDnaute Barbatruc
Re : soustration - différence par dico

Super !

Je tournais encore autour comme à chaque fois et c'est très intéressant d'avoir 2 approches.
Un jour peut être , je comprendrai tout seul comme un grand, même si ça m'arrive parfois d'y arriver sur base d'exemples que je garde !

Grand(s) merci(s) à vous !

P.
 

laetitia90

XLDnaute Barbatruc
Re : soustration - différence par dico

bonjour gosselien thebenoit59 jpb388

encore une autre facon d'ecrire

Code:
Sub es()
  Dim t(), i As Long, m As Object
   Set m = CreateObject("Scripting.Dictionary")
    t = Range("c2:d" & Cells(Rows.Count, 3).End(3).Row)
    For i = 1 To UBound(t)
    If m.Exists(t(i, 1)) Then
    t(m(t(i, 1)), 2) = t(m(t(i, 1)), 2) - t(i, 2)
    Else
    x = x + 1: t(x, 1) = t(i, 1): t(x, 2) = t(i, 2):  m(t(i, 1)) = x
    End If
    Next i
    [i2].Resize(x, 2) = t
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : soustration - différence par dico

Bonjour.

La version avec GroupOrg :
VB:
Sub Test()
Dim Données As Collection, T(), Nom As SsGroup, L As Long
Set Données = GroupOrg(ColUti(Feuil1.[C2:D2]), 1, 2)
ReDim T(1 To Données.Count, 1 To 2)
For Each Nom In Données
   L = L + 1
   T(L, 1) = Nom.Id
   T(L, 2) = Nom.Contenu(Nom.Contenu.Count).Id - Nom.Contenu(1).Id
   Next Nom
Feuil1.[I2].Resize(L, 2).Value = T
End Sub
Ou bien comme ça, ça marche aussi :
VB:
Sub Test()
Dim Données As Collection, T(), Nom As SsGroup, L As Long
Set Données = GroupOrg(ColUti(Feuil1.[C2:D2]), 1, Null, 2)
ReDim T(1 To Données.Count, 1 To 2)
For Each Nom In Données
   L = L + 1
   T(L, 1) = Nom.Id
   T(L, 2) = Nom.Contenu(Nom.Contenu.Count)(2) - Nom.Contenu(1)(2)
   Next Nom
Feuil1.[I2].Resize(L, 2).Value = T
End Sub
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : soustration - différence par dico

Bonsoir à tous

une autre version Dico

Code:
Private Sub CommandButton1_Click()
 Dim Tablo, TabTmp, i As Long, Maxi As Long, Mini As Long, Dico
 Set Dico = CreateObject("Scripting.Dictionary")
 Tablo = Range("C1").CurrentRegion
 For i = LBound(Tablo) + 1 To UBound(Tablo)
    Dico(Tablo(i, 1)) = IIf(Dico.exists(Tablo(i, 1)), Dico(Tablo(i, 1)) - Tablo(i, 2), Tablo(i, 2))
 Next
 Erase Tablo
 Tablo = Application.Transpose(Array(Dico.keys, Dico.Items))
 Range("G1").Resize(Dico.Count, 2) = Tablo
End Sub

A+
 

gosselien

XLDnaute Barbatruc
Re : soustration - différence par dico

Bonjour et Merci à tous

Je pense que personnellement, c'est ma version de PAF que je comprends le plus facilement mais j'ai gardé toutes les autres


P.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…