extraire le n° cité deux fois

Guido

XLDnaute Accro
Bonjour

J'ai bien sur regarder avant de poster...

Donc j'ai une plage de six chiffres

B3:C5 B3=1,B4=2,B5=3,C3=3,C4=9,C5=7

J'aimerai que le chiffre cités deux fois s'affiche dans la cellule B8,et si deux chiffres sont cités deux fois le deuxieme en C8

Merci pour votre aide

Guido
 

Guido

XLDnaute Accro
Re : extraire le n° cité deux fois

Bonjour

J'ai ajouté une colonne et des celulles

Donc j'ai une plage de 9 chiffres

et une plage de 18 chiffres

Je n'arrive pas a modifier les formules...

Sur le meme principe que plus haut

Merci pour votre aide

Guido
 

job75

XLDnaute Barbatruc
Re : extraire le n° cité deux fois

Bonjour Guido, CISCO, le forum,

Bon pour changer un peu un petit coup de VBA :

Code:
Function AuMoinsNfois(r As Range, Nfois&, ordre&)
Dim d As Object, c As Range
AuMoinsNfois = ""
Set d = CreateObject("Scripting.Dictionary")
For Each c In r
  If Application.CountIf(r, c) >= Nfois Then
    d(c.Value) = ""
    If d.Count = ordre Then AuMoinsNfois = c: Exit Function
  End If
Next
End Function
Fichier joint avec des tirages aléatoires dans la plage source (ce n'est pas indispensable).

Bonne journée.
 

Pièces jointes

  • Extraire les cités 2 fois(1).xls
    67 KB · Affichages: 20

job75

XLDnaute Barbatruc
Re : extraire le n° cité deux fois

Re,

Si l'on veut que le résultat soit trié ce n'est pas bien difficile avec Quick sort :

Code:
Function AuMoinsNfois(r As Range, Nfois&, ordre&)
Dim d As Object, c As Range, a
AuMoinsNfois = ""
Set d = CreateObject("Scripting.Dictionary")
For Each c In r
  If Application.CountIf(r, c) >= Nfois Then d(c.Value) = ""
Next
If ordre <= d.Count Then
  a = d.keys
  tri a, 0, UBound(a)
  AuMoinsNfois = a(ordre - 1)
End If
End Function

Sub tri(a, gauc, droi)       ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Extraire les cités 2 fois(2).xls
    70.5 KB · Affichages: 24

CISCO

XLDnaute Barbatruc
Re : extraire le n° cité deux fois

Bonsoir à tous, bonsoir Job75

Cf. en pièce jointe, toujours avec la même méthode, avec une formule matricielle à valider avec Crtrl+maj tempo+entrer.

@ plus
 

Pièces jointes

  • Copie de extraire-le-n-cite.xls
    49.5 KB · Affichages: 32

job75

XLDnaute Barbatruc
Re : extraire le n° cité deux fois

Bonjour à tous,

L'intérêt du VBA c'est qu'on peut faire tout ce qu'on veut.

Voyez le fichier joint avec le paramétrage de l'opérateur et du nombre de fois.

A+
 

Pièces jointes

  • Extraire les cités(1).xls
    71.5 KB · Affichages: 20

Guido

XLDnaute Accro
Re : extraire le n° cité deux fois

Bonjour

J'ai ajouté une colonne et des celulles

Donc j'ai une plage de 9 chiffres

et une plage de 18 chiffres

Je n'arrive pas a modifier les formules...

Sur le meme principe que plus haut

Merci pour votre aide

Guido

Re

Bonjour voici le fichier

Les deux options vont me rendre service.

Merci

amitiés

Guido
 

Pièces jointes

  • Extraire-le-n-cite-Trois-fois-extraire-les-cites-2-fois....xls
    48.5 KB · Affichages: 19
  • Extraire-le-n-cite-Trois-fois-extraire-les-cites-2-fois....xls
    48.5 KB · Affichages: 22
  • Extraire-le-n-cite-Trois-fois-extraire-les-cites-2-fois....xls
    48.5 KB · Affichages: 14

job75

XLDnaute Barbatruc
Re : extraire le n° cité deux fois

Re,

Pour votre dernier fichier cette solution dérivée de celle du post #19 :

Code:
Function AuMoinsNfois(r As Range, Nfois&, ordre&)
Dim d As Object, c As Range, a, b
AuMoinsNfois = ""
Set d = CreateObject("Scripting.Dictionary")
For Each c In r
  If Application.CountIf(r, c) >= Nfois Then _
    d(c.Value) = d(c.Value) + 1 'comptage
Next
If ordre <= d.Count Then
  a = d.items: b = d.keys
  tri a, b, 0, UBound(a)
  AuMoinsNfois = b(ordre - 1)
End If
End Function

Sub tri(a, b, gauc, droi)      ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) > ref: g = g + 1: Loop
    Do While ref > a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      temp = b(g): b(g) = b(d): b(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub
La macro de tri a été modifiée pour classer sur le nombre de fois.

A+
 

Pièces jointes

  • Extraire-le-n-cite-Trois-fois-extraire-les-cites-2-fois...(1).xls
    70 KB · Affichages: 17

CISCO

XLDnaute Barbatruc
Re : extraire le n° cité deux fois

Bonjour

Cf. le fichier en pièce jointe, toujours pour extraire les nombres cités au moins deux fois, avec Excel 2003, toujours avec une formule matricielle.

@ plus

P.S : Si tu veux les nombres cités au moins trois fois, il suffit de remplacer les >1 dans les formules par >2.
 

Pièces jointes

  • Extraire-le-n-cite-Trois-fois-extraire-les-cites-2-fois....xls
    44.5 KB · Affichages: 14
  • Extraire-le-n-cite-Trois-fois-extraire-les-cites-2-fois....xls
    44.5 KB · Affichages: 27
  • Extraire-le-n-cite-Trois-fois-extraire-les-cites-2-fois....xls
    44.5 KB · Affichages: 22

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35