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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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" ?
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" ?