Identier les occurences et leur nombre

djibouti

XLDnaute Nouveau
Bonjour à tous,

Je cheche un petit bout de code me permettant de trouver les occurences dans une liste ainsi que de les compter.
Voir un exemple simple dans le fichier joint (il devra être aussi possible de traiter un exemple avec plus de 10000 lignes...)

Dans le cas ou il n'a pas pas de d'occurence, afficher un message disant : "pas de doublon trouvé" par exemple.

Merci par avance de votre aide.

/Djibouti
 

Pierre-Henry

XLDnaute Junior
Re : Identier les occurences et leur nombre

Bonjour,
Pourquoi ne veux-tu pas également renvoyer tutu 1 et tyty 1?
La fonction NB.SI fait-elle l'affaire? (si tu veux renvoyer le nombre d'occurrences pour certaines valeurs définies par avance)
Ou bien un tableau croisé dynamique avec la fonction "compter"? (si tu veux la liste de toutes les entrées).

A te relire

Cordialement

EDIT : Oups, je voulais dire NB.SI, c'est corrigé.....bonjour Raja et merci du rectificatif
 
Dernière édition:

Raja

XLDnaute Accro
Re : Identier les occurences et leur nombre

Bonsoir,

Essaye une formule comme la suivante pour trouver le nombre d'occurences de "toto", A étant la colonne qui contient tes données.

Code:
=NB.SI(A:A;"toto")

édit : salut Pierre-Henry
 

djibouti

XLDnaute Nouveau
Re : Identier les occurences et leur nombre

Merci pour ces prémières réponses.
Je vais être un peu compliqué, désolé par avance.
Je ne voudrai pas spécifier les noms comme "toto" dans ton exemple mais que le code puisse es trouver, les noter et indiquer le nombre de répétitions "automatiquement".
Serait possible d'avoir un petit code pour ça plutôt qu'une formule.

Merci.

/Djibouti
 

Pierrot93

XLDnaute Barbatruc
Re : Identier les occurences et leur nombre

Bonsoir Djibouti, Pierre-Henry, Raja

Le code ci-dessous, renvoie dans la colonne B les différentes valeurs présentes dans la colonne A. En colonne C le nombre de fois :

Code:
Option Explicit
Sub test()
Dim d As Object, i As Integer, x As Integer, j As Integer
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To Range("A65536").End(xlUp).Row
    If Not d.exists(Range("A" & i).Value) Then
        d.Add Range("A" & i).Value, Range("A" & i).Value
        Range("B65536").End(xlUp).Offset(1, 0).Value = Range("A" & i).Value
        x = x + 1
        For j = i + 1 To Range("A65536").End(xlUp).Row
            If Range("A" & i).Value = Range("A" & j).Value Then x = x + 1
        Next j
        Range("B65536").End(xlUp).Offset(0, 1).Value = x
        x = 0
    End If
Next i
End Sub

bonne soirée
@+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Identier les occurences et leur nombre

Bonsoir,

Objet dictionary

Code:
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("A1", [A65000].End(xlUp))
     mondico(c.Value) = IIf(mondico.exists(c.Value), mondico(c.Value) + 1, 1)
  Next c
  [c2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  [d2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)

JB
Formation Excel VBA JB
 

djibouti

XLDnaute Nouveau
Re : Identier les occurences et leur nombre

Merci pour vos réponses.

J'ai testé le code de Pierrot, et cela correspond exactement à ce que je voulais. Le petit plus serait de pouvoir mettre les résultats dans une autre feuille avec comme en-tête de chaque colonne : occurence et nombre, cela est-t-il possible ?

Merci.

/Djibouti
 

djibouti

XLDnaute Nouveau
Re : Identier les occurences et leur nombre

Petite requête supplémentaire, peut-on aussi supprimer l'affichage des noms qui n'apparaissent qu'une fois, c'est-à-dire dont le nombre est égale à 1 ?

Merci.Merci.

Pour être plus concrèt, voici un fichier d'exemple. Je voudrais faire apparaitre le résultat dans l'onglet "main" (à la moitié de la page) la liste et nombre des doublons de la colonne B de la feuille 1 et ceux de la colonne B de la feuille 2

Merci.Merci.Merci

/Djibouti
 

Pièces jointes

  • Allocation Infomation_v1 - Copie.xls
    45.5 KB · Affichages: 146

Pierrot93

XLDnaute Barbatruc
Re : Identier les occurences et leur nombre

Bonjour Djibouti

un peu de patience.... Tu aurais peut être du donner ces précisions avant...
Je ne vois aucun code dans ton fichier... Pour agir sur une feuille donnée, tu la nommes, comme dans l'exemple ci dessous :

Code:
[COLOR="Red"][B]Sheets("Main").[/B][/COLOR]Range("B65536").End(xlUp).Offset(0, 1).Value = x

Pour les colonnes, il te suffit de changer les lettres, et le tour est joué.

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Identier les occurences et leur nombre

Re

pour éviter les noms n'apparaissant qu'une seule fois, tu peux modifier le code comme suit :

Code:
Option Explicit
Sub test()
Dim d As Object, i As Integer, x As Integer, j As Integer
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To Range("A65536").End(xlUp).Row
    If Not d.exists(Range("A" & i).Value) Then
        d.Add Range("A" & i).Value, Range("A" & i).Value
        x = x + 1
        For j = i + 1 To Range("A65536").End(xlUp).Row
            If Range("A" & i).Value = Range("A" & j).Value Then x = x + 1
        Next j
        If x > 1 Then
            With Range("B65536").End(xlUp)
                .Offset(1, 0).Value = Range("A" & i).Value
                .Offset(1, 1).Value = x
            End With
        End If
        x = 0
    End If
Next i
End Sub

@+
 

excalibur

XLDnaute Impliqué
Re : Identier les occurences et leur nombre

bonjour djibouti Pierrot BOISGONTIER le forum
une autre macro
pas le temps de simplifier..vu que tu utilise seulement 2 feuilles pas trop genant. adapte la boucle pour envoyer directement dans la feuille main attention dans chaque feuille j exploite les colonnes k & L si donnes dans ces colonnes modifie la macro

edit bonjour raja & pierre henry
 

Pièces jointes

  • Copie de Allocation Infomation_v1 - Copie.zip
    18 KB · Affichages: 104
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22