Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comparaison de deux liste

8 réponses
Avatar
Apitos
Bonjour,

Dans mon classeur, j'ai dans la feuille1 une liste de 40000 num=E9ros,
et dans la feuille2 une liste de 1500 num=E9ros.

Les donn=E9es de la premiere liste1 Feuil1:

A -------------------- B
Num=E9ro ----------- Type
014748810 -------
014748811 -------
014748812 -------
014748813 -------
014748814 -------
014748815 -------
014748816 -------
.
.
.

Dans la deuxieme list2e Feuil2 :

A
Num=E9ro
014748812
014748814
014748816

J'aimerais comparaitre les deux listes par num=E9ro.

S'il y'a deux num=E9ros qui se correspondent, on mettra dans la colonne
B sous type de liste1 devant le num=E9ro correspondant un K sinon un O.

La liste1 deviendra :

A -------------------- B
Num=E9ro ----------- Type
014748810 ------- O
014748811 ------- O
014748812 ------- K
014748813 ------- O
014748814 ------- K
014748815 ------- O
014748816 ------- K


Merci d'avance.

8 réponses

Avatar
JB
Bonsoir,

En B2:

=SI(ESTNA(EQUIV(A2;Feuil2!A2:A10000;0));"O";"K")

JB

On 4 juin, 19:06, Apitos wrote:
Bonjour,

Dans mon classeur, j'ai dans la feuille1 une liste de 40000 numéros,
et dans la feuille2 une liste de 1500 numéros.

Les données de la premiere liste1 Feuil1:

A -------------------- B
Numéro ----------- Type
014748810 -------
014748811 -------
014748812 -------
014748813 -------
014748814 -------
014748815 -------
014748816 -------
.
.
.

Dans la deuxieme list2e Feuil2 :

A
Numéro
014748812
014748814
014748816

J'aimerais comparaitre les deux listes par numéro.

S'il y'a deux numéros qui se correspondent, on mettra dans la colonne
B sous type de liste1 devant le numéro correspondant un K sinon un O.

La liste1 deviendra :

A -------------------- B
Numéro ----------- Type
014748810 ------- O
014748811 ------- O
014748812 ------- K
014748813 ------- O
014748814 ------- K
014748815 ------- O
014748816 ------- K

Merci d'avance.


Avatar
Apitos
Merci JB.

J'ai modifier la formule pour s'appliquer a tous les ligne :

=SI(ESTNA(EQUIV(A2;Feuil2!$A$2:$A$10000;0));"O";"K")

Mais pour 40000 lignes c'est pas facile ....

Y'a-t-il un autre moyen pour accomplir cette tache ?

Merci à vous.
Avatar
FFO
Salut à toi

Solution macro :

Sheets("feuil1").Select
For Each c In Worksheets("Feuil1").Range([A1], [A65535].End(xlUp))
n = 0
Sheets("feuil2").Select
For Each d In Worksheets("Feuil2").Range([A1], [A65535].End(xlUp))
If d = c Then
n = 1
Exit For
End If
Next
If n = 1 Then
c.Offset(0, 1) = "K"
Else
c.Offset(0, 1) = "O"
End If
Next

Pour 1000 lignes en feuil1 et 1500 lignes en feuil2 le temps de traitement
est de 10 secondes
Pour 40000 lignes en feuil1 et 1500 lignes en feuil2 il devrait être de 6
minutes

Peut être un peu long
A toi ce voir
Dis moi !!!

Merci JB.

J'ai modifier la formule pour s'appliquer a tous les ligne :

=SI(ESTNA(EQUIV(A2;Feuil2!$A$2:$A$10000;0));"O";"K")

Mais pour 40000 lignes c'est pas facile ....

Y'a-t-il un autre moyen pour accomplir cette tache ?

Merci à vous.




Avatar
JB
Bonjour,

Application.ScreenUpdating = False
For Each c In Range("A2", [A65000].End(xlUp))
Set x = Sheets(2).[A:A].Find(what:=c.Value, lookat:=xlWhole)
c.Offset(0, 1) = IIf(x Is Nothing, "O", "K")
Next c

40 s

JB

On 4 juin, 20:05, Apitos wrote:
Merci JB.

J'ai modifier la formule pour s'appliquer a tous les ligne :

=SI(ESTNA(EQUIV(A2;Feuil2!$A$2:$A$10000;0));"O";"K")

Mais pour 40000 lignes c'est pas facile ....

Y'a-t-il un autre moyen pour accomplir cette tache ?

Merci à vous.


Avatar
AV
Avec les fonctions de feuilles en lieu et place d'une boucle c'est 10 à
100 plus rapide !
Pour comparer 40000 cellules de "Feuil1" à 1500 cellules de "Feuil2" --->
5 à 6 secondes.

Exemple (à lancer à partir de "Feuil1")

Sub avecFormul()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[B2:B4000] = "=if(isnumber(match(A2,Feuil2!$A$2:$A$40000,0)),""K"",""O"")"
Application.Calculation = xlAutomatic
[B2:B4000] = [B2:B4000].Value
End Sub

AV
Avatar
AV
Sub avecFormul()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[B2:B40000] = "=if(isnumber(match(A2,Feuil2!$A$2:$A$40000,0)),""K"",""O"")"
Application.Calculation = xlAutomatic
[B2:B40000] = [B2:B40000].Value
End Sub

AV
Avatar
Apitos
On 5 juin, 11:13, "AV" wrote:
Sub avecFormul()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[B2:B40000] = "=if(isnumber(match(A2,Feuil2!$A$2:$A$40000,0)),""K"",""O"")"
Application.Calculation = xlAutomatic
[B2:B40000] = [B2:B40000].Value
End Sub

AV


Merci AV.

Avatar
PST
Bonjour

Explication de la formule ci dessous SVP

merci


Avec les fonctions de feuilles en lieu et place d'une boucle c'es t 10 à
100 plus rapide !
Pour comparer 40000 cellules de "Feuil1" à 1500 cellules de "Fe uil2" --->
5 à 6 secondes.

Exemple (à lancer à partir de "Feuil1")

Sub avecFormul()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[B2:B4000] = "=if(isnumber(match(A2,Feuil2!$A$2:$A$40000,0)), ""K"",""O"")"
Application.Calculation = xlAutomatic
[B2:B4000] = [B2:B4000].Value
End Sub

AV