Recherchev et gestion des résultats

Bonjour,

Je vous explique mon problème, je ne joint pas de fichier car trop lourd.

J'ai un premier onglet (liste totale des clients concernés) avec plus de 2000 lignes, tel que :

colonne A : Code client (référence unique)

colonne B : Référence (peut être identique à plusieurs Code)

colonne C : Libellé

J'ai un second onglet avec plus de 9000 lignes (Liste des codes 2 par code client), tel que :

colonne A : Code client

colonne B : Référence

colonne C : Libellé

colonne D : Code2

colonne E : Libellé2

Pour information :

Un client peu avoir aucun code 2 ou plusieurs code 2

Le but recherché est d'avoir un tableau qui croise les 2, on aurait :

Colonne A : Code client

Colonne B : Référence

Colonne C : Libellé)

Colonne D : Code2 (peut être vide)

Colonne E : Libellé2 (peut être vide)

Et dans lequel on retrouverait les + de 2000 clients et pour ceux qui ont un code 2, il y aurait autant de ligne que de code 2 disponible par client

Exemple :

Onglet 1 :

00001 CLM Client 1

00002 CLM Client 2

00003 CLM Client 3

00004 CLM Client 4

00005 CLM Client 5

00006 CLM Client 6

Onglet 2 :

00002 CLM Client 2 HA Achat

00002 CLM Client 2 VE Vente

00002 CLM Client 2 RH Ressources Humaines

00005 CLM Client 5 HA Achat

00006 CLM Client 6 HA Achat

00006 CLM Client 6 RH Ressources Humaines

Le résultat souhaité :

00001 CLM Client 1

00002 CLM Client 2 HA Achat

00002 CLM Client 2 VE Vente

00002 CLM Client 2 RH Ressources Humaines

00003 CLM Client 3

00004 CLM Client 4

00005 CLM Client 5 HA Achat

00006 CLM Client 6 HA Achat

00006 CLM Client 6 RH Ressources Humaines

Attention petit piège, dans l'onglet 1, il y a les lignes des clients 2, 5 et 6 sans le code2 mais je ne souhaite pas que cette ligne soit reprise car il existe un ou plusieurs code2.

J'espère que ce sera suffisamment clair.

J'ai essayé avec des rechercheV et d'autres astuces VBA trouvée sur le forum, mais rien qui me donne le résultat escompté.

Bonjour Tom.

Tu peux réduire ton fichier en supprimant des lignes.

Sans fichier tu n'obtiendras que peu d'aide.

thebenoit59 a écrit :

Bonjour Tom.

Tu peux réduire ton fichier en supprimant des lignes.

Sans fichier tu n'obtiendras que peu d'aide.

J'ai mis un tableau en reprenant l'exemple.

Merci d'avance.

7tab-exemple.xlsx (10.17 Ko)

Bonjour tom.

Voilà une première solution.

Tu appuies sur le bouton du troisième onglet et la procédure se lance.

On travaille avec des tableaux virtuels pour réduire le temps de procédure avec des données assez importantes.

J'enregistre chaque code client dans l'onglet 2 dans un dictionnaire.

Après je fais de même pour l'onglet 1 seulement si le code n'est pas repris dans le dictionnaire ci-dessus.

Ca me permet de connaître le nombre de lignes du dernier tableau.

Ensuite j'ajoute toutes les lignes du tableau de l'onglet 2 + celles des clients non retrouvés et j'exporte sur la feuille3, un petit tri alphabétique sur la première colonne pour obtenir dans l'ordre.

thebenoit59 a écrit :

Bonjour tom.

Voilà une première solution.

Tu appuies sur le bouton du troisième onglet et la procédure se lance.

On travaille avec des tableaux virtuels pour réduire le temps de procédure avec des données assez importantes.

J'enregistre chaque code client dans l'onglet 2 dans un dictionnaire.

Après je fais de même pour l'onglet 1 seulement si le code n'est pas repris dans le dictionnaire ci-dessus.

Ca me permet de connaître le nombre de lignes du dernier tableau.

Ensuite j'ajoute toutes les lignes du tableau de l'onglet 2 + celles des clients non retrouvés et j'exporte sur la feuille3, un petit tri alphabétique sur la première colonne pour obtenir dans l'ordre.

Chapeau !! ça marche super bien.

Alors pour information, j'avais trouvé une autre combine qui était de mettre les deux dictionnaires sur la même feuille, de les trier par code, puis en fonction de la redondance du code, indiquer si celui-ci était "isolé" ou "multiple".

J'ai pris tous les "multiples" dans un autre onglet et avec une macro de suppression, j'ai supprimé toutes les lignes de l'onglet 1 qui s'étaient mises avec celle de l'onglet 2. (celles qui n'avaient pas de code2).

Ensuite j'ai mis ce nouveau dictionnaire avec les "isolés" et TADA.

On arrive au même résultat.

Sauf que j'y ai passé beaucoup plus de temps et cela demande plus de gymnastique, donc plus de risques d'erreurs....

Merci!! j'opte pour ta solution bien plus efficace.

tom01 a écrit :
thebenoit59 a écrit :

Bonjour tom.

Voilà une première solution.

Tu appuies sur le bouton du troisième onglet et la procédure se lance.

On travaille avec des tableaux virtuels pour réduire le temps de procédure avec des données assez importantes.

J'enregistre chaque code client dans l'onglet 2 dans un dictionnaire.

Après je fais de même pour l'onglet 1 seulement si le code n'est pas repris dans le dictionnaire ci-dessus.

Ca me permet de connaître le nombre de lignes du dernier tableau.

Ensuite j'ajoute toutes les lignes du tableau de l'onglet 2 + celles des clients non retrouvés et j'exporte sur la feuille3, un petit tri alphabétique sur la première colonne pour obtenir dans l'ordre.

Chapeau !! ça marche super bien.

Alors pour information, j'avais trouvé une autre combine qui était de mettre les deux dictionnaires sur la même feuille, de les trier par code, puis en fonction de la redondance du code, indiquer si celui-ci était "isolé" ou "multiple".

J'ai pris tous les "multiples" dans un autre onglet et avec une macro de suppression, j'ai supprimé toutes les lignes de l'onglet 1 qui s'étaient mises avec celle de l'onglet 2. (celles qui n'avaient pas de code2).

Ensuite j'ai mis ce nouveau dictionnaire avec les "isolés" et TADA.

On arrive au même résultat.

Sauf que j'y ai passé beaucoup plus de temps et cela demande plus de gymnastique, donc plus de risques d'erreurs....

Merci!! j'opte pour ta solution bien plus efficace.

Sans doute que la solution proposée ira également plus vite.

Rechercher des sujets similaires à "recherchev gestion resultats"