SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

shoub

XLDnaute Nouveau
Bonjour a tous ,

Mon problème est le suivant jai une enorme liste d'agents avec des nom prénom il s'agit de gérer des abscences alors bien evidemment certains individus sont absent plusieurs fois dans l'année donc des doublons apparaissent dans la feuille !!! je voudrais que ces doublons ne fassent plus qu'un et en meme temps que les durées d'abscence s'aditionne et se mette sur la meme ligne d'agents!

Comment faire????

Merci d'avance
 

Pièces jointes

  • test.xls
    14 KB · Affichages: 252
  • test.xls
    14 KB · Affichages: 278
  • test.xls
    14 KB · Affichages: 279

Caillou

XLDnaute Impliqué
Re : SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

Bonjour,

Avec un tableau croisé dynamique, regardes le fichier joint et reviens aux nouvelles si besoin

JP
 

Pièces jointes

  • test.xls
    21 KB · Affichages: 677
  • test.xls
    21 KB · Affichages: 683
  • test.xls
    21 KB · Affichages: 656

esftel

XLDnaute Occasionnel
Re : SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

Bonjour,

La methode du TCD est je pense la meilleur. mais pour la forme te te propose aussi une solution formulaire avec la fonction : SOMME.SI

A VOIR
 

Pièces jointes

  • Agent double ABS.xls
    18 KB · Affichages: 691

dblf

XLDnaute Nouveau
Re : SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

Bonjour,

La methode du TCD est je pense la meilleur. mais pour la forme te te propose aussi une solution formulaire avec la fonction : SOMME.SI

A VOIR

Hello,

Eh bien comme goraxx31, je déterre pour dire merci :).

J'ai un fichier de 23 105 lignes à traiter et les macros vba se cassent les dents dessus. J'avais développé mon propre code à la base mais ça a planté.

Alors qu'avec la simple formule, je devrais aller bcp plus vite :).

Thanks !
 

cheikh

XLDnaute Nouveau
Re : SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

Salut shoub
Bonsoir le fil
Bonsoir le Forum

en pièce jointe une autre approche

Le Fichier : Regarde la pièce jointe 82677

Bonne fin de Soirée

Bonjour le forum,
concernant la proposition de ChTi160 je suis très intéressé et depuis hier j'essaie de l'adapter mais je comprends pas trop comment utiliser les variables tableaux en VBA (LBound, UBound ...) vu que le code n'est pas aussi commenté.
Pour mon cas par exemple les codes agents qui me sert à repérer les doublons se trouve dans ma colonne G mes données à partir de la ligne 11.
Merci d'avance.
 

cheikh

XLDnaute Nouveau
Re : SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

Bonjour,

et si tu déposais une copie anonymisée de ton fichier avec la même structure bien sur :)

P.
Bonjour gosselien,
ce-joint mon fichier d'exemple avec quelques ligne mais en réalité je peux avoir plus de 18000 ligne.
Mon souci est d'adapter la macro car mes données commencent à partir de la ligne 15 et les sommes que je dois additionner s'il existe des doublons au niveau du N°SS se trouvent en colonne AD
Merci d'avance
 

Pièces jointes

  • testV11.xlsm
    115 KB · Affichages: 116
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

bonjour tous :):)

un exemple avec ton fichier???

Code:
Sub es()
Dim t(), i As Long, m As Object, x As Long, z
  Application.ScreenUpdating = 0
  Set m = CreateObject("Scripting.Dictionary")
  t = Range("a15:ad" & Cells(Rows.Count, 1).End(3).Row)
  Range("a15:ad" & Cells(Rows.Count, 1).End(3).Row).ClearContents
   For i = 1 To UBound(t)
   z = t(i, 1)
   If m.Exists(z) Then
   t(m(z), 30) = t(m(z), 30) + t(i, 30)
   Else
   x = x + 1
   For c = 1 To 30: t(x, c) = t(i, c): Next c:   m(z) = x
   End If
   Next i
  [a15].Resize(x, 30) = t
End Sub

ps oublie de declarer var.. c

dim c as byte
 
Dernière édition:

cheikh

XLDnaute Nouveau
Re : SUPPRIMER LES DOUBLONS ET ADDITIONNER LES DURées

bonjour tous :):)

un exemple avec ton fichier???

Code:
Sub es()
Dim t(), i As Long, m As Object, x As Long, z
  Application.ScreenUpdating = 0
  Set m = CreateObject("Scripting.Dictionary")
  t = Range("a15:ad" & Cells(Rows.Count, 1).End(3).Row)
  Range("a15:ad" & Cells(Rows.Count, 1).End(3).Row).ClearContents
   For i = 1 To UBound(t)
   z = t(i, 1)
   If m.Exists(z) Then
   t(m(z), 30) = t(m(z), 30) + t(i, 30)
   Else
   x = x + 1
   For c = 1 To 30: t(x, c) = t(i, c): Next c:   m(z) = x
   End If
   Next i
  [a15].Resize(x, 30) = t
End Sub

ps oublie de declarer var.. c

dim c as byte

re bonjour et merci bcp laetitia90,
Votre réponse résout le problème que j'ai posé.
J'essaye de comprendre et d'utiliser les variables tableau en vba mais c'est pas encore le cas et je me rends compte qu'ils réduisent complètement le temps d’exécution des macros.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 461
dernier inscrit
dams94