Alignement de 4 colonnes en fonction des doublons
Bonjour, je me tourne vers vous car je suis face à un problème qui me fait perdre énormément de temps et dont je n'ai pas encore trouvé la solution malgré pas mal de recherches...
J'ai un fichier excel composé de 4 colonnes comme ceci :
A B C D
Lus10000465 Lus10000465 Lus10000465 Lus10000465
Lus10001280 Lus10001280 Lus10001280 Lus10001280
Lus10001845 Lus10002169 Lus10002169 Lus10001845
Lus10002197 Lus10002197 Lus10002197 Lus10001950
et je voudrais aligner les cellules identiques pour obtenir ceci :
A B C D
Lus10000465 Lus10000465 Lus10000465 Lus10000465
Lus10001280 Lus10001280 Lus10001280 Lus10001280
Lus10001845 Lus10001845
Lus10001950
Lus10002169 Lus10002169
Lus10002197 Lus10002197 Lus10002197
En fait je veux qu'une ligne soit créée pour chaque valeur "Lusxxxxxxxx" identique (par ordre alphabétique) tout en gardant la position de la colonne.
Exemple : pour Lus10002169 je veux qu'une ligne soit créée uniquement pour cette valeur et qu'elles soient disposées dans les colonnes B et C qui correspondent à leur position initiale dans le premier fichier.
J'espère avoir été clair ^^
Ci besoin je peux transmettre le fichier complet.
Merci d'avance pour vos réponses!!
Bonjour Sheirka et bienvenue sur le forum,
Ton exemple avec ton cas réel n'est pas très parlant, je me permets donc de modifier l'énoncé pour être sûr de ne pas commettre d'erreur:
Supposons que tes données soient des A, B, C etc... (A le plus petit, F le plus grand)
A.A.A.A
B.B.B.B
D.C.C.D
F.E.F.E
Tu veux alors récupérer (où "*" = vide et "." est le séparateur de colonne)
A.A.A.A
B.B.B.B
*.C.C.*
D.*.*.D
*.E.*.E
F.$.F.*
Correct?
Merci de joindre un fichier avec tes données, j'aurai alors une proposition pour toi.
Merci beaucoup pour cette réponse rapide, et oui c'est exactement ça que je veux faire tu as tout à fait compris!
Je te joins mon fichier (en fait j'en ai une dizaine de différents mais si je comprend la logique sur le premier je réussirai à le faire sur les suivants), si tu as la moindre question n'hésite pas.
Et merci encore ça va beaucoup m'aider!
Voilà ma proposition:
Plusieurs remarques:
- Le nom des feuilles n'est pas important pour le code, mais les feuilles en elle-même sont importantes. Ne t'amuses pas à en supprimer/recréer, le code ne fonctionnera probablement plus.
- Le code prend en compte les données qui sont placées dans la plage "A1:D999", tu peux décaler le numéro de ligne, mais je te déconseille de changer les colonnes, parce que ça ne fonctionnera plus correctement.
"A2:D500" ' est tout à fait envisageable
"B1:E500" ' doit être évité, ou alors d'autres parties du code seront à changer
- j'affiche des "X" plutôt que répéter 4 fois la références. Si tu veux absolument la mise en page de ton premier post, il faudra simplement remplacer
For Each clef In maCollection.Keys
Set donnee = maCollection.Item(clef)
Feuil2.Cells(numLigne, 1) = "Lus" & clef
If donnee.colonne1 = True Then Feuil2.Cells(numLigne, 2) = "X"
If donnee.colonne2 = True Then Feuil2.Cells(numLigne, 3) = "X"
If donnee.colonne3 = True Then Feuil2.Cells(numLigne, 4) = "X"
If donnee.colonne4 = True Then Feuil2.Cells(numLigne, 5) = "X"
numLigne = numLigne + 1
Next clefpar
For Each clef In maCollection.Keys
Set donnee = maCollection.Item(clef)
If donnee.colonne1 = True Then Feuil2.Cells(numLigne, 1) = "Lus" & clef
If donnee.colonne2 = True Then Feuil2.Cells(numLigne, 2) = "Lus" & clef
If donnee.colonne3 = True Then Feuil2.Cells(numLigne, 3) = "Lus" & clef
If donnee.colonne4 = True Then Feuil2.Cells(numLigne, 4) = "Lus" & clef
numLigne = numLigne + 1
Next clefJ'attends ton retour
Super ça fonctionne niquel!
Je viens de traiter toutes les données de mes différents fichiers en quelques minutes!
Merci beaucoup pour ton aide et surtout pour ta rapidité!!
Bonne soirée, à toi!