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.
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.