Recenser et dénombrer

Ken Hutchinson

XLDnaute Occasionnel
Bonjour à tous,


Voici un fichier avec 2 colonnes. La colonne A avec un type de chiffres et la colonne B avec d'autres chiffres.

Je dois faire un tableau qui dirait :
combien de fois telle donnée de la colonne A a rencontré telle donnée de la colonne B.

J'ai mis un exemple dans le fichier...

Je pensais faire un truc dans ce style
Code:
Range("A2").select
Set MaPlage = ActiveCell.CurrentRegion
NBLignes = MaPlage.Rows.Count

For i = 2 to NBLignes

' et c'est là que je ne sais plus faire
' lire la donnée A et regarder la donnée B
' Dans le tableau a droite lister les combinaisons
' et ensuite rajouter +1 à chaque constatation déjà faite

Activecell.offset(0,1).select
next i

Pouvez vous m'aider ?

merci de votre aide
 

Pièces jointes

  • kenfichier.zip
    8.7 KB · Affichages: 27
  • kenfichier.zip
    8.7 KB · Affichages: 29
  • kenfichier.zip
    8.7 KB · Affichages: 27

job75

XLDnaute Barbatruc
Re : Recenser et dénombrer

Bonjour Ken,

Pourquoi pas en G2, puis tirer vers le bas :

Code:
=SI(E2<>"";SOMMEPROD(1*(A$2:A$1000&" "&B$2:B$1000=E2&" "&F2));"")

NB. Je suppose que vous entrez manuellement les valeurs en colonnes E et F.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Recenser et dénombrer

Re,

Voici une solution par macro qui renseigne les colonnes E F G :

Code:
Sub Compte()
Dim plage As Range, cel As Range, txt$, c As New Collection, i As Long
[E2:G65536].ClearContents

On Error Resume Next
Set plage = Range([A2], [A65536].End(xlUp))
For Each cel In plage
txt = cel & " " & cel.Offset(, 1)
c.Add txt, txt
Next

For i = 1 To c.Count
Range("E" & i + 1) = Split(c(i), " ")(0)
Range("F" & i + 1) = Split(c(i), " ")(1)
Range("G" & i + 1) = Evaluate("SumProduct(1*(" & plage.Address & "&"" ""&" & plage.Offset(, 1).Address & "=""" & c(i) & """))")
Next

End Sub

Fichier joint.

Edit : j'avais oublié de déclarer la variable plage

A+
 

Pièces jointes

  • kenfichier.zip
    13.5 KB · Affichages: 19
  • kenfichier.zip
    13.5 KB · Affichages: 21
  • kenfichier.zip
    13.5 KB · Affichages: 21
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Recenser et dénombrer

Bonjour,

Code:
Sub Essai()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("A2", [A65000].End(xlUp))
     temp = c & "-" & c.Offset(, 1)
     mondico(temp) = IIf(mondico.exists(temp), mondico(temp) + 1, 1)
  Next c
  [k2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  [l2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
End Sub

ou

Code:
Sub compteOccurences2critères2()
'Outils/Références Microsoft ActiveX Data Object 2.8
  ActiveWorkbook.Names.Add Name:="MaBd", RefersTo:=Sheets(1).[A1].CurrentRegion
  Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name
  Sql = "SELECT data1,data2,count(*) as Nbre from MaBD GROUP BY data1,data2"
  Set rs = cnn.Execute(Sql)
  [k2].CopyFromRecordset rs
  rs.Close
  cnn.Close
  Set rs = Nothing
End Sub


JB
 

Pièces jointes

  • DictionaryCompteDoublons2crit.zip
    18.7 KB · Affichages: 23
Dernière édition:

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise