Comparer 2 tableaux

job75

XLDnaute Barbatruc
Re : Comparer 2 tableaux

Bonjour patate38, CISCO,

CISCO tu continues à t'accrocher à cette histoire de 2 chiffres alors que je t'ai dit que notre ami s'était mal exprimé.

Il voulait simplement dire qu'on étudiait les doublons à partir de 2 nombres par ligne, ce qui est clair sur le tableau des résultats.

Maintenant voici une importante amélioration de mon code VBA dans ce fichier (4) :

Code:
Function NbIdent(vecteur As Range, r As Range, pos)
Dim a(), i, compte, c
pos = pos 'matrice
ReDim a(1 To UBound(pos, 2))
For i = 1 To UBound(pos, 2)
  pos(1, i) = Val(pos(1, i))
  If pos(1, i) = 0 Then a(i) = ""
Next
On Error Resume Next
For Each r In r.Rows
  compte = 0
  For Each c In vecteur
    compte = compte + Application.CountIf(r, c)
  Next
  i = Application.Match(compte, pos, 0)
  a(i) = a(i) + 1
Next
NbIdent = a 'vecteur ligne
End Function
La fonction renvoie maintenant une matrice (vecteur ligne).

On l'utilise dans la feuille en sélectionnant AD3:AJ3 et en entrant dans cette plage cette formule :

Code:
=NbIdent($A3:$Z3;$C$22:$J$25;AD$1:AJ$1)
que l'on valide matriciellement par Ctrl+Maj+Entrée.

Le calcul est 4 fois plus rapide pour les 5 lignes 3 5 7 9 11 des formules :

- fichier (3) => 35 millièmes de seconde

- fichier (4) => 9 millièmes de seconde sur Win XP - Excel 2003.

Ce sera utile sur de grands tableaux.

A+
 

Pièces jointes

  • Comparer 2 tableaux(4).xls
    43 KB · Affichages: 40

CISCO

XLDnaute Barbatruc
Re : Comparer 2 tableaux

Bonjour

Bonjour patate38, CISCO,

CISCO tu continues à t'accrocher à cette histoire de 2 chiffres alors que je t'ai dit que notre ami s'était mal exprimé.

Il voulait simplement dire qu'on étudiait les doublons à partir de 2 nombres par ligne, ce qui est clair sur le tableau des résultats.

A+

Si c'est ça, ce n'est vraiment pas la même musique, et un SOMMEPROD(1*(NB.SI($C24:$J24;$A$22:$Z$22)>0))-1 suffisait...

@ plus
 

Discussions similaires

Réponses
2
Affichages
98
Réponses
25
Affichages
673

Statistiques des forums

Discussions
312 329
Messages
2 087 329
Membres
103 517
dernier inscrit
hbenaoun63