Scripting.Dictionary Adaptation

  • Initiateur de la discussion Initiateur de la discussion Hoareau
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hoareau

XLDnaute Occasionnel
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
 
Re : Scripting.Dictionary Adaptation

Bonjour Hoareau



Une quarantaine d'affichages et pas l'ombre du début d'une réponse...

Peut-être devriez-vous joindre un support. Par exemple, un petit classeur montrant :
  1. La situation initiale.
  2. La situation finale souhaitée.
Cela permettrait peut-être de comprendre ce que vous voulez dire et aurait le mérite de nous éviter de "refabriquer" votre classeur.


À bientôt.



ROGER2327
#6107


Dimanche 1[SUP]er[/SUP] Tatane 139 (Fête du Père Ubu (Ubu d’été) - fête Suprême Première seconde)
26 Messidor An CCXX, 8,5374h - sauge
2012-W28-6T20:29:23Z
 
Re : Scripting.Dictionary Adaptation

Presque ça

La comparaison ne se fait pas par pas de deux mais ligne en cours avec ligne suivante
Jusqu'à ce que les deux conditions ne soient plus remplies

1) La valeur du nombre de doublons à savoir 4 dans le cas présent ou plus précisement longueur de la combinaison (5) -1 = 4
2) La valeur des doublons est la même

Tant que ces deux conditions sont remplies les différents sont rajoutés, comme exemple sur la feuille
 

Pièces jointes

Re : Scripting.Dictionary Adaptation

Re...


Presque ça

La comparaison ne se fait pas par pas de deux mais ligne en cours avec ligne suivante
Jusqu'à ce que les deux conditions ne soient plus remplies

1) La valeur du nombre de doublons à savoir 4 dans le cas présent ou plus précisement longueur de la combinaison (5) -1 = 4
2) La valeur des doublons est la même

Tant que ces deux conditions sont remplies les différents sont rajoutés, comme exemple sur la feuille

Désolé, ma maîtrise du Français est insuffisante pour vous comprendre. J'espère que d'autres pourront vous aider.​


Bonne soirée.



ROGER2327
#6113


Lundi 2 Tatane 139 (Commémoration du Père Ebé - fête Suprême Quarte)
27 Messidor An CCXX, 7,3266h - ail
2012-W28-7T17:35:02Z
 
Re : Scripting.Dictionary Adaptation

bonjour Hoareau , ROGER
passer 1h la dessus pas compris grand chose également??? surtout qu'avec le dernier fichier encore moins clear
une approche pour trouver les occurences non en double pour les autres c'est l'inverse a construire plus le temps
fait sur les 29 premieres lignes de ton der fichier

Code:
Sub es()
  Dim m As Object, i As Long, z As Byte
  For i = 4 To 28 Step 2
  Set m = CreateObject("Scripting.Dictionary")
  For Each c In Cells(i, 1).Resize(2, 5)
  m.Item(c.Value) = m.Item(c.Value) + 1
  Next c
  z = 12
  For Each c In Cells(i, 1).Resize(2, 5)
  If m.Item(c.Value) = 1 Then Cells(i + 1, z) = c: z = z + 1
  Next c
  Set m = Nothing
  Next i
End Sub
 
Re : Scripting.Dictionary Adaptation

Bonjour

Impeccable

Juste un détail

- Aux lignes 66 et 67
- Aux lignes 87 et 88

Le 12 apparait aussi bien dans les communs que dans le différents

Il semblerait que si les chiffres communs d'une même ligne ne se suivent pas , il y a doublon dans la colonne des communs


Si c'est possible:

Sur la ligne g1:z1, j'ai des N° de 1 à 20 qui correspondent à ces combinaisons
Sur la ligne g2:z2, j'ai des valeurs qui correspondent à ces N°



J'aimerais mettre juste en dessous de la ligne des communs et des différents la valeur qui correspond à chaque chiffre

1;2;3;4#8;9;10
10;12;7;2#3;5

; juste pour séparer dans message

merci
 
Re : Scripting.Dictionary Adaptation

Bonjour


Il y a une erreur dans le code précédent. Je la corrige dans le classeur joint.

Nouvelle demande :

(...)
Sur la ligne g1:z1, j'ai des N° de 1 à 20 qui correspondent à ces combinaisons
Sur la ligne g2:z2, j'ai des valeurs qui correspondent à ces N°
(...)
Je n'ai rien vu dans la zone G1:Z2 qi ressemble à ce que vous décrivez.
(...)
J'aimerais mettre juste en dessous de la ligne des communs et des différents la valeur qui correspond à chaque chiffre

1;2;3;4#8;9;10
10;12;7;2#3;5

; juste pour séparer dans message

merci
Ce n'est vraiment pas clair pour moi.

En particulier, vous voulez substituer 3;5 à 8;9;10. Pourquoi pas, mais il faudrait au moins énoncé une règle pour la substitution de de deux valeurs à trois valeurs.

En l'absence d'une telle règle, j'ai tenté une interprétation pifométrique...​



ROGER2327
#6121


Mardi 3 Tatane 139 (Sainte Crapule, puriste et Saint Fantomas, archange - fête Suprême Quarte)
28 Messidor An CCXX, 5,6362h - vesce
2012-W29-1T13:31:37Z
 

Pièces jointes

Re : Scripting.Dictionary Adaptation

Re...


On va finir par y arriver.



ROGER2327
#6121


Mardi 3 Tatane 139 (Sainte Crapule, puriste et Saint Fantomas, archange - fête Suprême Quarte)
28 Messidor An CCXX, 5,6389h - vesce
2012-W29-1T13:32:00Z
 

Pièces jointes

Re : Scripting.Dictionary Adaptation

Bonjour

Le transfert de la correspondance des valeurs se fait impeccablement

J'ai essayé de trouver, comment faire, de façon à ce que quelque soit le nombre de chiffres mis sur la ligne,la procédure s'applique mais pas trouvé. Actuellement si je mets plus de 5 chiffres, la procédure ne s'applique qu'aux 5 premiers.
De façon a ce que le résultat s'affiche 2 colonnes vides après la dernière valeur de la ligne

ex:
N_1 N_2 N_3 N_4 N_5
N_1 N_2 N_3 N_4 N_5N_6
N_1 N_2 N_3 N_4 N_5N_5N_7
N_1 N_2 N_3 N_4 N_5N_5N_5N_8

etc..

merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
280
Retour