Scripting.Dictionary adaptation

1 réponse
Avatar
PST
Bonjour

Bonjour

Je cherche =E0 adapter cet macro de JB =E0 un tableau de 1000 lignes 10 c=
olonnes

Je voudrais afficher les communs sur une ligne a c=F4t=E9
Sur la m=EAme ligne, les diff=E9rents

Tant que les communs sont les m=EAmes et le m=EAme nombre que la ligne en=
=20
dessous , on rajoute les diff=E9rents sur la m=EAme ligne


Ex:
le point ; repr=E9sente la s=E9paration de colonne

1001;1002;1004;1005;1006;1007;1008;1009;1010;1012

1001;1002;1004;1005;1006;1007;1008;1009;1010;1014

1001;1002;1004;1005;1006;1007;1008;1009;1015;1016

R=E9sultat sur la ligne 2

Communs : 1001;1002;1004;1005;1006;1007;1008;1009;1010
Diff=E9rents: 1012;1014

A la troisi=E8me ligne la proc=E9dure recommence puisque ni le nombre de =

valeurs communes, ni les valeurs ne sont plus les m=EAmes

Le r=E9sultat serait =E0 afficher,=E0 chaque fois, sur la derni=E8re lign=
e ou=20
les deux conditions sont r=E9unies =E0 savoir dans l'exemple la ligne 2

Mondico1 serait la ligne en cours
Mondico2 la ligne en dessous


Merci




Sub Communs()
a =3D Range("A2:A" & [A65000].End(xlUp).Row)
Set MonDico1 =3D CreateObject("Scripting.Dictionary")
For Each c In a
MonDico1(c) =3D ""
Next c
b =3D Range("C2:C" & [C65000].End(xlUp).Row)
Set mondico2 =3D CreateObject("Scripting.Dictionary")
For Each c In b
If MonDico1.exists(c) Then If Not mondico2.exists(c) Then=20
mondico2(c) =3D ""
Next c
[G2].Resize(mondico2.Count, 1) =3D Application.Transpose(mondico2.keys=
)
End Sub

1 réponse

Avatar
MichD
Bonjour,

Je ne comprends pas la question.

Peux-tu publier un petit fichier illustrant ce que tu veux faire et le résultat attendu.
Pour ce faire, tu peux utiliser l'adresse suivante : cjoint.com. Tu nous retournes ici
l'adresse que tu auras obtenue.

N'oublie pas d'expliquer pour quelles raisons un élément est différent des autres
et doit être classé dans un autre groupe, ce n'est pas clair pour moi!



MichD
---------------------------------------------------------------
"PST" a écrit dans le message de groupe de discussion :
5001909c$0$6197$

Bonjour

Bonjour

Je cherche à adapter cet macro de JB à un tableau de 1000 lignes 10 colonnes

Je voudrais afficher les communs sur une ligne a côté
Sur la même ligne, les différents

Tant que les communs sont les mêmes et le même nombre que la ligne en
dessous , on rajoute les différents sur la même ligne


Ex:
le point ; représente la séparation de colonne

1001;1002;1004;1005;1006;1007;1008;1009;1010;1012

1001;1002;1004;1005;1006;1007;1008;1009;1010;1014

1001;1002;1004;1005;1006;1007;1008;1009;1015;1016

Résultat sur la ligne 2

Communs : 1001;1002;1004;1005;1006;1007;1008;1009;1010
Différents: 1012;1014

A la troisième ligne la procédure recommence puisque ni le nombre de
valeurs communes, ni les valeurs ne sont plus les mêmes

Le résultat serait à afficher,à chaque fois, sur la dernière ligne ou
les deux conditions sont réunies à savoir dans l'exemple la ligne 2

Mondico1 serait la ligne en cours
Mondico2 la ligne en dessous


Merci




Sub Communs()
a = Range("A2:A" & [A65000].End(xlUp).Row)
Set MonDico1 = CreateObject("Scripting.Dictionary")
For Each c In a
MonDico1(c) = ""
Next c
b = Range("C2:C" & [C65000].End(xlUp).Row)
Set mondico2 = CreateObject("Scripting.Dictionary")
For Each c In b
If MonDico1.exists(c) Then If Not mondico2.exists(c) Then
mondico2(c) = ""
Next c
[G2].Resize(mondico2.Count, 1) = Application.Transpose(mondico2.keys)
End Sub