OVH Cloud OVH Cloud

nombre de commun

2 réponses
Avatar
Bonjour,
Ayant deux tableaux contenant des donn=E9es num=E9riques,=20
comment faut-il faire pour trouver le nombre de donn=E9es=20
communes.
ex: tableau n=B01 15 colonnes 500 lignes
tableau n=B02 300 colonnes 12 lignes
nombre de commun entre tableau 1 ligne 1 et tableau 2=20
colonne 1, puis nombre de commun entre tableau 1 ligne 1=20
et tableau 2 colonne 2, etc .... puis nombre de commun=20
entre tableau 1 ligne 2 et tableau 2 colonne 1, puis=20
nombre de commun entre tableau 1 ligne 3 et tableau 2=20
colonne 1, etc....
Si quelqu'un a la solution je l'en remercie par avance.
Amicalement

2 réponses

Avatar
Frédéric Sigonneau
Bonsoir,

En supposant que tu parles bien de feuilles de calcul Excel (les 300 colonnes de
ton tableau 2 sèment le doute..), tu peux utiliser ce genre de boucles
imbriquées sur des tableaux remplis avec les valeurs des plages de données. La
collection récupère les valeurs communes dans une liste sans doublons et cette
liste est finalement renvoyée dans une feuille ajoutée au classeur.
Code à copier dans un module standard de ton classeur (et à adapter pour ce qui
concerne les noms des feuilles et les plages de données) :

Sub testt()
Dim i&, j&, k&, l&
Dim Arr1, Arr2, Coll As New Collection
Arr1 = Sheets("Feuil1").Range("A1:O500").Value
Arr2 = Sheets("Feuil2").Range("A1:IP12").Value
For i = 1 To 15
For j = 1 To 500
For k = 1 To 250
For l = 1 To 12
If Arr1(j, i) = Arr2(l, k) Then
On Error Resume Next
Coll.Add Arr1(j, i), CStr(Arr1(j, i))
On Error GoTo 0
End If
Next l
Next k
Next j
Next i
Sheets.Add
For i = 1 To Coll.Count
Cells(i, 1).Value = Coll(i)
Next
End Sub

(Evidemment, vu le nombre de boucles, ce n'est pas instantané...).

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,
Ayant deux tableaux contenant des données numériques,
comment faut-il faire pour trouver le nombre de données
communes.
ex: tableau n°1 15 colonnes 500 lignes
tableau n°2 300 colonnes 12 lignes
nombre de commun entre tableau 1 ligne 1 et tableau 2
colonne 1, puis nombre de commun entre tableau 1 ligne 1
et tableau 2 colonne 2, etc .... puis nombre de commun
entre tableau 1 ligne 2 et tableau 2 colonne 1, puis
nombre de commun entre tableau 1 ligne 3 et tableau 2
colonne 1, etc....
Si quelqu'un a la solution je l'en remercie par avance.
Amicalement


Avatar
AV
Histoire de....
Plages nommées "tablo1" et "tablo2"

** Mise en forme conditionnelle :
Sélection tablo1 (A1:XXx) > MFC >
la formule est :
=OU(A1=tablo2)
format > ok....
Ca risque d'être longuet ! (à supprimer le plus vite possible...)


** Extraire toutes les valeurs de "tablo2" présentes dans "tablo1"
Sub zz_Extract_Dbl()
On Error Resume Next
With Application
.ScreenUpdating = False
.DisplayAlerts = False
Sheets("Extract").Delete
.DisplayAlerts = True
End With
Sheets.Add.Name = "Extract"
x = 1
ad = [tablo2].Parent.Name & "!" & [tablo2].Address
For Each c In [tablo1]
If Evaluate("or(" & c & "=" & ad & ")") Then
Sheets("Extract").Cells(x, 1) = c.Value
x = x + 1
End If
Next
MsgBox [CountA(Extract!A:A)]
End Sub

** En relisant la question je m'en pose une autre :
Ne voudrais-tu pas extraire/compter séparément pour chacune des lignes de
"tablo1" ?

AV