compter les lignes qui se répète le plus

asco

XLDnaute Junior
bonjour
j'aurais aimé savoir si c'était possible de compter les lignes qui sont pareil je m'explique
j'ai une base de donnée avec sql
en fait j'ai:
une colonne date, nom, prénom , id

j'ai plusieurs dates d'entrée , et plusieurs nom et prénom différents
mais dans ma base de donnée le même id peut se répéter plusieurs fois
par exemple:
date entré nom prénom id
01/12/2012 david puj 0112
04/06/2012 david puj 0112
02/07/2010 seb col 0458
17/06/2010 seb col 0458
08/08/2005 seb col 0458
01/01/2009 asc lok 1453


je cherche une requette me permettant de faire un classement
quelles sont les 100 personnes qui ont le plus d’entrées
il devrai me dire seb col 3 fois
david 2 fois
asc 1 fois

je cherche a faire le classement des 100 personnes qui ont le plus d'entrée classé par ordre du plus grand au plus petit

est ce possible de le faire en excel?ou une requette sql?

merci de bien vouloir m' aidez
 

MichD

XLDnaute Impliqué
Re : compter les lignes qui se répète le plus

Bonjour,


Bonjour,

L'exemple suivant est basé sur les paramètres suivants :

Le nom de la feuille est "Feuil1")
les données sont dans A1:Dx
La première ligne du tableau destinée aux étiquettes

Les ID sont en colonne D

Et le tableau final s'affichera dans les colonnes G1:Hx


VB:
Sub Test()
'Tu ajoutes dans la fenêtre "références"
'de la barre des menus / outils / références
'la référence suivante en la cochant :
'"Microsoft Scripting Runtime"
Dim Dic As Dictionary, C As Range
Dim t(), A As Long, N As Variant, X As Integer
Dim DerLig As Long
Set Dic = CreateObject("Scripting.Dictionary")

Application.ScreenUpdating = False
Application.EnableEvents = False

With Worksheets("Feuil1")
    With .Range("A:D")
        DerLig = .Find("*", LookIn:=xlValues, _
            SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    End With
    For Each C In .Range("D2:D" & DerLig)
        If C <> "" Then
            If Not Dic.exists(C.Value) Then
                Dic.Add C.Value, C.Offset(, -3).Value
            End If
        End If
    Next
    
    ReDim t(1 To Dic.Count, 1 To 2)
    For A = 0 To Dic.Count - 1
        N = Dic.Keys(A)
        X = Application.CountIf(Feuil1.Range("D1:D" & DerLig), N)
        t(A + 1, 1) = Dic.Items(A)
        t(A + 1, 2) = Dic.Keys(A)
    Next
    .Range("G1").Resize(A, 2) = t
    With .Range("G1:H" & A)
        .Sort key1:=Range("H1"), Order1:=xlDescending, Header:=xlNo
    End With
End With
End Sub
 
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : compter les lignes qui se répète le plus

Bonsoir @ tous,
Bonsoir MichD :),
J'aime bien les matricielles, alors pourquoi ne pas jouer un peu avec....
@ + +
 

Pièces jointes

  • asco.xlsx
    10.9 KB · Affichages: 64
  • asco.xlsx
    10.9 KB · Affichages: 60
  • asco.xlsx
    10.9 KB · Affichages: 71

MichD

XLDnaute Impliqué
Re : compter les lignes qui se répète le plus

Bonjour Rachid,

Le demandeur devrait indiquer sa version d'Excel
Pour ce qui est des matricielles, c'est très bien, mais comme
elles consomment beaucoup de ressources, cela dépend
de l'étendue du tableau et du besoin de l'usager!
;-)

Disons que sur ce coup, il a le choix!
 

R@chid

XLDnaute Barbatruc
Re : compter les lignes qui se répète le plus

Bonsoir,
l'ami MichD à dit:
Le demandeur devrait indiquer sa version d'Excel
Oui c'est déjà fait...
VersionDemandeur.png

l'ami MichD à dit:
Pour ce qui est des matricielles, c'est très bien, mais comme
elles consomment beaucoup de ressources, cela dépend
Oui c'est sur, je l'ai fait d'une manière qui ne consomme pas beaucoup de ressources...

asco à dit:
je cherche une requette me permettant de faire un classement
quelles sont les 100 personnes qui ont le plus d’entrées
il devrai me dire seb col 3 fois
david 2 fois
asc 1 fois
d’après sa demande la formule va être valider sur une plage de 100 lignes, donc le reste à savoir c'est combien de lignes sur sa base...

en attendant voir ce lien que j'ai fait dans le salon...

@ + +
 

asco

XLDnaute Junior
Re : compter les lignes qui se répète le plus

Bonjour rachid

Merci pour ta réponse rapide et clair

J'ai essayé ton fichier mais je ne sais pas comment mettre à jour.
Dans mon tableau principale j'ai seb3 en cliquant dessus je vois les 3 ligne de seb
mais quand j en supprime une dans le tableau je devrais avoir 2 seb
ca ne se met pas à jour automatiquement?

J'ai une base de donnée d'environ 1000 personnes
et je voudrais sortir que les 100 premiers qui se repete le plus.
comment je vais adapter ton excel a mon cas.
vu que j'aurai sur une seule feuille tout mon tableau alors que toi tu as mis le tableau et les données dans des feuilles différentes.comment adapter ca?

Petite question , je m'escuse d'avance de la poser , comment tester le code VBA de MicD?

Merci pour votre aide
 

laetitia90

XLDnaute Barbatruc
Re : compter les lignes qui se répète le plus

bonjour tous :):)
exemple a adapter

Code:
Sub es()
 Dim i As Long, t As Variant, m As Object
 Columns("F:G").ClearContents
 Set m = CreateObject("Scripting.Dictionary")
 t = Range("b1:b" & Cells(Rows.Count, 2).End(xlUp).Row).Value
 For i = LBound(t) To UBound(t)
 m(t(i, 1)) = m(t(i, 1)) + 1
 Next
 [f1].Resize(m.Count) = Application.Transpose(m.keys)
 [g1].Resize(m.Count) = Application.Transpose(m.items)
 [f1:g1000].Sort Key1:=[g1], Order1:=xlDescending, Header:=xlGuess
End Sub

ps pour michel pas oblige activer la reference '"Microsoft Scripting Runtime" dans ce cas la... declarer en tant object

par contre dans cas la

Code:
 Set m = New Dictionary
  Dim m As Dictionary

la on est oblige..... dailleurs code plus rapide.... enfin pas toujours depend du code
 

Pièces jointes

  • asco1.xls
    39.5 KB · Affichages: 46

asco

XLDnaute Junior
Re : compter les lignes qui se répète le plus

Bonjour leatitia

Ton compte est magique , magnifique :)
c'est parfait :)

par contre pour l'améliore est ce possible de mettre le bouton dans une feuille et le tableau dans une autre feuille
comme ca je gère le tableau d'un coté et j'aurais le compte dans l'autre

Merci

bonjour tous :):)
exemple a adapter

Code:
Sub es()
 Dim i As Long, t As Variant, m As Object
 Columns("F:G").ClearContents
 Set m = CreateObject("Scripting.Dictionary")
 t = Range("b1:b" & Cells(Rows.Count, 2).End(xlUp).Row).Value
 For i = LBound(t) To UBound(t)
 m(t(i, 1)) = m(t(i, 1)) + 1
 Next
 [f1].Resize(m.Count) = Application.Transpose(m.keys)
 [g1].Resize(m.Count) = Application.Transpose(m.items)
 [f1:g1000].Sort Key1:=[g1], Order1:=xlDescending, Header:=xlGuess
End Sub

ps pour michel pas oblige activer la reference '"Microsoft Scripting Runtime" dans ce cas la... declarer en tant object

par contre dans cas la

Code:
 Set m = New Dictionary
  Dim m As Dictionary

la on est oblige..... dailleurs code plus rapide.... enfin pas toujours depend du code
 

laetitia90

XLDnaute Barbatruc
Re : compter les lignes qui se répète le plus

re tous :):)
tableau en feuil1 resultat en feuil2 a adapter
attention au noms des feuilles bien les changer dans la macro autrement faire avec le code.name feuille

tu peus appeler des 2feuilles
 

Pièces jointes

  • asco2.xls
    43.5 KB · Affichages: 72

asco

XLDnaute Junior
Re : compter les lignes qui se répète le plus

re tous :):)
tableau en feuil1 resultat en feuil2 a adapter
attention au noms des feuilles bien les changer dans la macro autrement faire avec le code.name feuille

tu peus appeler des 2feuilles

Re

je m' escuse de revenir vers vous, je souhaiterais pouvoir rajouter des colonnes dans mon resultat
si vous pouvez juste me montré la procédure comme ca je pourrais rajouter autant que je veux

et aussi comment je pourrais faire pour avoir le resultat en fonction du id
parceque le seb col 458 c'est pas le meme que seb col 1725,257143
en fait les chiffres correspondent au id unique de la personne vu qu'ils n'ont pas les memes id donc ce sont des personnes différents.
donc seb col 458 je devrais avoir resultat 3 et non 6

Merci
 
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : compter les lignes qui se répète le plus

Bonjour @ tous,
Voir PJ...
Tu peux nommer les champs ça va beaucoup t'aider à appliquer les formules dans un autre Onglet...
@ + +
 

Pièces jointes

  • asco.xlsx
    12.8 KB · Affichages: 44
  • asco.xlsx
    12.8 KB · Affichages: 48
  • asco.xlsx
    12.8 KB · Affichages: 51

asco

XLDnaute Junior
Re : compter les lignes qui se répète le plus

Bonjour @ tous,
Voir PJ...
Tu peux nommer les champs ça va beaucoup t'aider à appliquer les formules dans un autre Onglet...
@ + +

Salut

ta formule elle prend en compte les ID n'estce pas ?ce n'est pas en fonction des noms?
un david ID01 sera une personne différente de david ID02

aussi comment je fais pour rajouter une colonne prenom dans mon tableau de gauche pour que cela soit visbible dans mon tableau de droite car mon tableau a plusieur colonne mais le tri se fera juste en fonction du ID

merci
 

Statistiques des forums

Discussions
312 490
Messages
2 088 882
Membres
103 981
dernier inscrit
vinsalcatraz