Compter sans doublon

bertrandc

XLDnaute Nouveau
Mon problème concerne toujours mon tableau des effectifs (28 colonnes 531 lignes...), qui a bien avancé (merci bhbh !!!). Dedans, j'ai deux colonnes qui portent les Noms et prénoms des agents. Mais voilà, le même agent peut apparaitre plusieurs fois, dans la mesure où par exemple il est à mi-temps sur un service (autre colonne) et à mi-temps sur un autre, une autre colonne signalant le temps de travail sur chacun des deux services.
Quand il s'agit de faire un TCD pour récapituler, par service ou statut, la somme des temps de travail, pas de problème. Mais comment puis-je avoir un TCD avec le nombre de personnes concernées (donc hors doublons)..

Merci d'avance !!!

bertrandc
 

bertrandc

XLDnaute Nouveau
Re : Compter sans doublon

Bon, au risque de paraitre ridicule, et en espérant ne pas avoir fait cogiter d'autres personnes trop longtemps, j'ai fini par trouver une solution que j'expose à vos critiques (ça marche, mais ce n'est pas élégant) :
Disons que dans mon tableau, j'ai les noms dans la colonne A et les prénoms en colonne B.
Je rajoute une colonne C dite 'intermédiaire' qui va rechercher les doublons, avec la formule

=SOMMEPROD((A1:A1=A2)*(B1:B1=B2)*(A2<>""))

Je tire vers le bas jusqu'au bas du tableau et même au-delà : les noms-prénoms seuls apparaissent comme 0, seuls les doublons apparaissent avec 1

Je rajoute alors une autre colonne D 'Nb de personnes uniques", avec la formule :

=SI(ET(C1<>"";C1=0);1;"")

Je tire vers le bas, ce qui donne une série de 1, et rien quand le nom-prénom est un doublon.
Reste plus qu'à masquer la colonne C (qui ne sert qu'au calcul intermédiaire).
A partir de là, je peux trouver le nb de personnes uniques...

Voir fichier joint pour exemple.

Qu'en pensez-vous ? Je devine que ce n'est pas très propre...

bertrandc
 

Pièces jointes

  • doublons.xls
    14.5 KB · Affichages: 152
  • doublons.xls
    14.5 KB · Affichages: 157
  • doublons.xls
    14.5 KB · Affichages: 161

JHA

XLDnaute Barbatruc
Re : Compter sans doublon

Bonjour Bertrand, le forum,

Une autre solution, avec concatenation des noms et prénoms en colonne E nommée "ListeA" et réalisation d'une liste sans doublon en colonne H avec index().
Attention, E1 doit rester vide. Tu peux masquer la colonne E.

Edit:
autrement sans ta colonne sup:
=SI(ET(SOMMEPROD((A2:A2=A3)*(B2:B2=B3)*(A3<>" "))<>"";SOMMEPROD((A2:A2=A3)*(B2:B2=B3)*(A3<>" "))=0);1;"")

JHA
 

Pièces jointes

  • doublons Bertrand.xls
    16.5 KB · Affichages: 209
Dernière édition:

JHA

XLDnaute Barbatruc
Re : Compter sans doublon

Re Bertrand,

La formule sommeprod que tu as réalisée fonctionne si les mêmes noms sont ensemble. Je te propse celle-ci qui cherche dans les plages A2:A10 & B2:B10.

=SI(ET(SI(NB.SI(A2:A10;A2)>1;0;NB.SI(A2:A10;A2))+SI(NB.SI(B2:B10;B2)>1;0;NB.SI(B2:B10;B2))>0;SI(NB.SI(A2:A10;A2)>1;0;NB.SI(A2:A10;A2))+SI(NB.SI(B2:B10;B2)>1;0;NB.SI(B2:B10;B2))<3);1;0)
Edit:
formule à mettre en C2 et tirer vers le bas
JHA
 
Dernière édition:

bertrandc

XLDnaute Nouveau
Re : Compter sans doublon

Ben alors là ! Je ne pensais pas qu'on pouvais agglomlérerautant de SI, de ET et de NB.SI dans la même formule !! C'est vrai parfait (je préfère ça à la concaténation : je n'aime pas rajouter du texte explicite dans les colonnes : je fais ça pour qqu'un d'autre). J'ai juste remplacé le 0 final par "", comme ça je peux prolonger la colonne assez loin pour que tout soit calculé dans l'avenir, avec l'implémentation de nouvelles colonnes. et comme c'est la fonction somme qui jouera dans les TCD voire la somme simple................;

Mille mercis pour ton aide, JHA

bertrandc
 

kiki29

XLDnaute Barbatruc
Re : Compter sans doublon

Salut, en reprenant le fichier de JHA, via VBA et une collection
Code:
Option Explicit

Sub Tst()
Dim i As Long
Dim LastRow As Long
Dim Coll As Collection
    
    Application.ScreenUpdating = False
    Columns("I:I").Clear
    LastRow = Range("A65536").End(xlUp).Row
    Set Coll = New Collection
    
    For i = 2 To LastRow
        On Error Resume Next
        Coll.Add Cells(i, 1) & " " & Cells(i, 2), CStr(Cells(i, 1) & Cells(i, 2))
        If Err.Number = 457 Then Err.Clear
    Next i
    
    For i = 1 To Coll.Count
        Cells(i + 1, 9) = Coll(i)
    Next i
    
    Set Coll = Nothing
    Range("J1").Select
    Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 782
Messages
2 092 065
Membres
105 179
dernier inscrit
tataflo