Ranger 3 colonnes en fonction de leurs lignes identiques
Bonjour à toutes et tous,
Ça fait un moment que je galère et que je cherches sans trouver de solution à ce que je veux faire, je penses pourtant que ce ne doit pas être très compliqué.
Voilà mon souci :
J'ai une feuille avec trois colonnes.
Dans chaque colonne j'ai des noms de produits classés par ordre alphabétique.
Chaque produit peut se retrouver dans 1 colonne, ou bien 2 d'entre elles, ou bien les 3. Le souci c'est que pour contrôler où il est présent c'est difficile le produit peut être à la 30 eme ligne de la colonne 1 mais à la 789eme de la colonne 2, etc.
Ce que je souhaites, c'est classer ou trier de manière a avoir le produit toto de la colonne 1 sur la même ligne que le produit toto de la colonne 2, et rien dans la colonne 3 si il n'y existe pas.
Je ne sais pas si j'ai été assez clair, aussi je vous donne une feuille avec ce que j'ai et le tri final que j'aimerais avoir :
Merci d'avance pour tout début de réponse ou piste à suivre, que ce soit formule ou vba.
Salut Tieum357,
Est-ce que ça correspond un peu à ton souhait ?
A te relire
Bonjour,
A quoi correspond la cellule vide en début de colonne ID1 (ligne 2)= non saisie ou résultat de formule="" ? il y en a t il d'autres un peu partout dans les colonnes?
Combien as tu au total de référence (environ) ?
les emplacements de ton tableau source et de ton tableau rangé sont ils exacts ?
ces petits renseignements pourraient accélérer beaucoup la macro ( j'ai l'algo dans la t^te)
si tu me réponds, j'essaierais de te proposer une réponse dans l'après-midi
dans l'attente
Bonjour tous les deux et merci de vos réponses !
Alors, Yvouille :
Yvouille a écrit :Salut Tieum357,
Est-ce que ça correspond un peu à ton souhait ?
A te relire
je n'arrives pas à lancer le tri, ça m'ouvres une boite de dialogue : "Erreur de compilation, variable non définie". L'éditeur se place sur "xlSortOnValues" ligne 36.
et Michel_m :
A quoi correspond la cellule vide en début de colonne ID1 (ligne 2)
Mes 3 colonnes sont issues d'une copie de colonnes venant d'une autre feuille et j'ai une cellule vide à cet endroit de la colonne originale.
Combien as tu au total de référence (environ)
il s'agit d'un futur catalogue de fers, je vais atteindre les 400/450 références environ.
les emplacements de ton tableau source et de ton tableau rangé sont ils exacts
non c'est un exemple, et au fur et à mesure qu'on rajoutera des références de fers dans le catalogue, le rangement changera dans le tableau source (des lignes s'intercaleront entre d'autres).
Je vous remercie tous les deux, je vais essayer de décortiquer la macro que Yvouille m'a fait pour comprendre, je pensais que excel m'aurait permis de faire ça "facilement" lol.
-- 03 Sep 2010, 09:57 --
Yvouille, je comprends ce que tu fais jusqu'à ligne 31, tu copies les valeurs de mes colonnes ID1 ID2 et ID3 (D, E, F) les unes à la suite des autres dans la colonne R.
C'est ensuite que je ne comprends pas où tu veux en venir et ce que tu fais.
Re-salut Tieum357,
C'est bizarre que mon code ne passe pas chez toi, il n'y a aucun problème sur deux de mes PC. Es-tu sur de ne rien avoir modifié ? Réssaye éventuellement avec mon fichier de base placé ci-dessus.
J'ai continué à développer ce travail et te présente une version plus complète. J'y ai placé des exemples avec plus de 1000 références et ça fonctionne très bien chez moi également. Dans cette nouvelle version j'ai placé en tout premier un tri des colonnes de bases, "au cas où". Malheureusement, avec autant de données, ce travail dure jusqu'à 30 secondes.
Sinon l'idée que j'avais eu au départ, c'était de prendre tes colonnes - à ce moment-là sans les trier, puisque tu disais l'avoir déjà fait - de les aligner les unes derrières les autres dans la colonne R, de trier cette colonne, supprimer les doublons, puis comparer la colonne R avec les données d'origine en inscrivant des formule dans les colonnes S, T et U afin d'y rapporter les données d'origine si elles étaient trouvées, de transformer les formules des colonnes S, T et U en valeurs puis d'effacer la colonne R.
Pour mieux comprendre une macro, connais-tu la méthode pas-à-pas et les points d'arrêts ?
A te relire.
Edit : Fichier incorrect supprimé
Re,
non je n'ai rien modifié.
Ok je comprends ton processus je vais mieux comprendre le code maintenant
Par contre pour le dernier fichier, tu as du te tromper, c'est pour faire du mailing ce que tu m'envoies
Le pas à pas non je ne connais pas, je vais regarder comment m'en servir.
Concernant la durée du traitement ce n'est pas un problème car on ne va pas le lancer 50 fois par jours.
Re,
j'avais dit ct'aprèm mais le pb me trottait dans la tête
ci joint proposition avec le résultat en feuille 2 (modifie si ...)
sur ton exemple réalisation pratiquement instantanée (15/1000 sec)
tu dis...
Edit: peut-être sans importance mais les colonnes de ton tableau de départ n'ont pas besoin d'être triées au préalable
Je pense que j'ai effectivement dû me planter. Voici donc le fichier dont il est question.
Pour voir les macros pas-à-pas, tu les lances avec la touche F8 et chaque fois que tu tapes sur F8, ça éxécute la ligne de code sélectionnée. De cette manière tu vois à chaque ligne ce qui a été modifié. Tu peux ainsi par exemple voir les modifications des variables au fur et à mesure que ton code avance. Si tu fais apparaître à l'écran la fenètre Excel et la fenètre Visual Basic, tu peux également voir comment est modifié le fichier Excel en fonction de l'avancement de ta macro.Génialement utile !
Si ça va un peu long - par exemple si tu dois appuyer 1000 fois sur F8 afin de faire une boucle de 1000 itérations - tu peux placer des points d'arrêt - en cliquant avec la souris sur la marge grise à gauche du code - de manière à ce que la macro s'arrête là (dans l'exemple ci-dessus juste après la boucle) et que tu puisses continuer pas-à-pas depuis là avec la touche F8.
Pour enlever un point d'arrêt, tu cliques à nouveau dessus.
A te relire
Bonjour à tous,
Tieum nous aurait il refilé son boulot avant de partir en WE ???
tout ça pour signaler qu'il faut que le nombre de chiffres de la référence soit semblable; par ex HW123, HW999 et non HW123, HW1004. Apparemment cette contrainte semblerait aussi valable pour la solution proposée par Yvouille(Bonjour) mais je n'ai pas regardé à fond
a part ça sur environ 900 références différentes, la réorganisation que je propose prend environ 0,3 seconde
J'attends que tieum se signale pour envoyer la maquette 900ref
Bonjour à tous !
Oui j'étais en weekend et fort occupé hier si bien que je n'ai pas pu vous répondre. Donc :
Yvouille, j'ai eu beau essayer, je n'arrive pas à faire fonctionner ton vb, a chaque fois le même message, j'ai tenté de le faire pas à pas mais à chaque exécution il y a l'erreur. Quand je regardes l'aide associé au message, voilà ce que j'ai :
Vous avez utilisé une instruction Option Explicit nécessitant la déclaration explicite de variables, mais avez employé une variable sans la déclarer. J'ai testé la suppression de cette première ligne, et toutes les lignes déroulent sans souci jusque celle-cis :
ActiveWorkbook.Worksheets("Feuille").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuille").Sort.SortFields.Add Key:=Range( _où j'ai le message suivant lorsqu'il passe de l'une à l'autre :
Propriété ou méthode non gérée par le projetMichel, j'ai testé ton vb et il fonctionne nickel, c'est exactement ce dont j'avais besoin. Je l'ai adapté en fonction de mes feuilles et cellules sur mon fichier. J'aurais toujours un nombre de chiffres identiques pour les références, en l'occurrence 3.
J'ai compris toutes tes étapes pour arriver au résultat, je vais maintenant tenter de comprendre dans le détails chacune des fonctions que je ne connaissais pas.
En tout cas merci pour le temps que vous me consacrez !
Bonjour, ze forum
comme promis, Ci joint la maquette 900ref, le code est commenté
Re-bonjour, je reviens sur :
tout ça pour signaler qu'il faut que le nombre de chiffres de la référence soit semblable; par ex HW123, HW999 et non HW123, HW1004
j'ai testé en mettant :
HN1005057
HN198994.57
HN7003001324
dans les références comparées, et ça fonctionne tout de même...? le résultat est OK.
Eh non!
essaies avec HW107 et HW1001, tu verras ...
Coches le sujet résolu, Merci
Content d'avoir pu t'aider
à 1 2 C 4
Euh, oui, il ne sont pas rangés dans l'ordre en effet, mais la comparaison est tout de même effectuée
Je te remercie