Comparaison de deux liste

Le
Apitos
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4942781
Bonsoir,

En B2:

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

JB

On 4 juin, 19:06, Apitos
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.


Apitos
Le #4942741
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.
FFO
Le #4942381
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.




JB
Le #4942351
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
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.


AV
Le #4942301
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
AV
Le #4942251
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
Apitos
Le #4941051
On 5 juin, 11:13, "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


Merci AV.

PST
Le #4911631
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




Publicité
Poster une réponse
Anonyme