Reclassement de données dans Excel
Bonjour chers forumeurs,
Je viens solliciter votre aide pour un problème que je ne peux solutionner seul avec mes trop modestes compétences. J'ai des données dans un classeur excel qui vont de la plus veille feuille à la plus récente (j'ai une bonne centaine de feuilles identiques). J'ai une page de garde pour le résumé de mes données de départ (une sorte de base de données).
Je souhaiterais pouvoir développer une macro qui prendrait les données brutes de ma page de garde, les compareraient avec un classement dans la feuille correspondante et me les recopieraient dans ma page de garde, dans le bon ordre, à un endroit différent... ceci afin de garder les données brutes et le résultat final.
Bon, expliqué comme ça, c'est peut-être pas très clair... Pour cette raison, je vous joins un petit fichier d'exemple de ce que je souhaiterais pouvoir obtenir.
J'espère qu'une bonne âme pourra m'aider, parce qu'à la main, c'est source d'erreur et ça devient très vite un petit long...
Par avance, je vous remercie de votre précieuse aide ou de toute piste pouvant me mettre sur la voie !
A vous lire.
Une petite piste de départ pour embrayer le problème
Je suis prêt à bosser le "truc", mais il me faudrait un embryon de piste de départ, parce que mes essais de reclassement se sont avérés vains jusqu'ici...
Cordialement et merci de votre aide !
Salut,
J'ai regardé ton problème hier et j'ai trouvé ta demande assez peu claire. J'ai également vu que tu avais posé des questions sur la base d'un fichier ressemblant passablement à celui de ce post et je n'ai pas compris pourquoi tu n'avais pas suivi la discussion là-bas (https://forum.excel-pratique.com/post165566.html#p165566).
Il me semble que si j'entreprends quelque chose sur la base de ce nouveau fichier, je vais devoir refaire une bonne partie d'un travail qui était déjà fait, non ?
Cordialement.
Salut et merci de t'intéresser à mon problème
Alors en fait, je vais essayer de faire simple
J'ai une plage de chiffre 1-2-3-4 (disposée en ligne) dans la première feuille de mon classeur.
Je souhaite comparer cette plage de chiffres à une autre plage de chiffres (disposée en colonne), dans une autre feuille de mon classeur, par exemple : 14-12-9-8-2-1-5-7-4-3.
Seul les chiffres 1-2-3-4 m'intéressent et je souhaiterais pouvoir les trier en fonction de la colonne correspondante pour obtenir 2-1-4-3 que je copie dans une autre plage afin d'avoir les données brutes et les données "corrigées".
La première plage de ma première page correspond à la dernière feuille du classeur
La deuxième plage de ma première page à la feuille précédente, etc...
Le sujet dont tu parles me permet de recopier des données depuis les pages précédentes vers la première, mais pas de faire de comparaison, ni de tri "résultat" de la comparaison.
Le problème étant que si j'utilise le travail fait précédemment (que j'utilise chaque jour), je ne vais pas obtenir le résultat escompté puisque j'aurai 9-8-2-1 et que le 9-8 ne m'intéresse pas... Mais il y a certainement de la matière à reprendre de l'exemple fourni !
En espérant avoir été plus clair... (ce qui n'est pas gagné, je dois bien l'avouer...).
Cordialement
P.S. Je remets le fichier joint. Je peux régler le problème d'importation, mais le problème de comparaison reste insoluble pour moi...
Re,
Un essai en complément à ton de code.
Je n'ai pas compris si tu avais besoin de ces données dans les colonnes AE et suivantes, mais elles me servent
Cordialement.
Salut,
Le premier jet de ta solution me semble être la bonne voie. Néanmoins, je rencontre un dernier petit problème.
Le tableau est évolutif, donc le nombre de feuilles et de lignes vont quotidiennement augmenter. En rajoutant des lignes et des feuilles, la procédure ne fonctionne plus.
En cherchant à comprendre ton travail pour apprendre (aussi), j'ai remarqué que tu faisais le traitement dans les cellules situées au-dessus des données, ce qui veut dire que si j'ai des lignes supplémentaires, le traitement se fait dans le tableau des données.
J'ai bien essayé de corriger ce point, mais je n'y arrive pas.
Pour le reste, c'est parfait et pour répondre à ta question, les données récupérées, elles ne me servent pas, donc, on pourrait les effacer, mais c'est de la cosmétique.
En tous cas, merci de ta patience et de ton aide !
Cordialement
Salut,
lachatovsky a écrit :En cherchant à comprendre ton travail pour apprendre (aussi), j'ai remarqué que tu faisais le traitement dans les cellules situées au-dessus des données, ce qui veut dire que si j'ai des lignes supplémentaires, le traitement se fait dans le tableau des données.
Ce tableau est juste provisoire ; c'est la solution de facilité que j'ai trouvée afin de résoudre ton problème, bien qu'il doit exister des solutions plus orthodoxes pour y arriver.
Comme ton tableau est évolutif, on peut déplacer ce trableau provisoire à un autre endroit, comme je l'ai fait dans le nouveau fichier ci-joint.
lachatovsky a écrit :.....pour répondre à ta question, les données récupérées, elles ne me servent pas, donc, on pourrait les effacer, mais c'est de la cosmétique.
Alors effaçons les à la fin, après qu'elles m'aient servi
Cordialement.
Salut,
Comme je te l'ai indiqué par courrier privé, je préfère continuer la discussion sur le Forum.
lachatovsky a écrit :....... Néanmoins, il y a encore deux petites choses que je souhaiterais pouvoir faire avec ce fichier. En fait, j'utilise la macro que tu as développée pour faire une analyse de ma base de données et je rencontre deux problèmes :
Si dans la plage des 4 chiffres à reclasser, un des chiffres n'est pas dans la liste de comparaison, la ligne de résultat reste vide. Est-ce possible d'afficher les résultats obtenus et laisser la/les cases vides si c'est le cas ? Exemple 1-2-3-4 à comparer avec 7-9-2-1-6-8-4 donnerait le résultat suivant : 2-1-4-"vide".
Le deuxième souci que je pensais pouvoir régler de moi-même, mais je n'y arrive pas parce que je ne comprends ni le code, ni les formules... Si je souhaite faire une comparaison, non pas avec 4 chiffres, mais avec 2-3-5 ou 6 (max), je n'y arrive pas... Est-il possible de rendre le modèle plus souple à ce niveau ? Ou m'expliquer comment faire et je le fais moi-même ?
Pour les lignes vides, j'ai corrigé le code selon ton souhait, ou du moins je l'espère.
Pour corriger le code en fonction de 2 à 6 chiffres, c'est très difficile de te répondre. Déjà, lorsque tu fournis un fichier exemple à la place du fichier réel, je ne suis jamais certain que ce soit la meilleure solution - dans la limite de mes moyens - que je te propose. Eventuellement que si j'avais le fichier réel sous la main, ma solution différerait. Alors lorsque tu parles de modifier mon code prévu pour 4 chiffres afin de traiter 2 à 6 chiffres, je dis : "Stop, j'arrête de travailler à l'aveugle". Je te propose alors tu fournisses ton fichier réel et que j'y jette un coup d'œil.
En ce qui concerne ta demande d'explications par contre, je pense qu'il y en aurait pour quelques pages afin de tenter d'expliquer ce que j'ai fait et je ne me sens pas le courage de me lancer la dedans. As-tu déjà pensé à regarder le "Cours VBA" proposé sur ce Forum ? Ou indique plus précisément quel passage tu désirerais comprendre.
Cordialement.
Salut Yvouille,
Pour moi, aucun problème
Tu as corrigé la chose comme un KING et je t'en remercie.
Et pour répondre à ta question, le fichier que je t'ai mis, c'est celui (en moins volumineux) que j'utilise en réel.
Je n'en ai pas d'autre. Je voulais juste savoir, si je rajoutais des colonnes supplémentaires dans la plage des chiffres à comparer, ce qu'il aurait fallu faire pour adapter le code (je suis prêt à essayer de le faire moi-même pour apprendre). Comme tu as résolu le problème numéro 1, forcément de 2 à 4 chiffres, ça fonctionne à merveille, puisqu'au lieu de donner 4 chiffres, si j'en donne 2 ou 3, il reclasse ceux restants en donnant un résultat.
J'ai suivi le "cours" du forum et j'apprends très petit à petit en regardant les solutions que l'on me propose et en essayant de comprendre ce que fait quoi. Finalement, ce que j'aurais voulu savoir, c'est où se trouvait la formule qui fait le travail
Désolé de ne pas avoir été forcément très clair au début
Mais finalement, pour moi, le problème est largement résolu et je t'en remercie grandement
Avec mes sincères remerciements et cordiales salutations
Lorsque je ne sais pas comment écrire une formule dans un code, j’utilise l’enregistreur de macro et je regarde le résultat.
Par exemple dans le fichier ci-joint, j’ai tout d’abord enregistré un code dans le module 1 puis j’ai réutilisé le résultat dans le module 2, pour la cellule C2.
En comparaison, je t’indique une autre manière d’arriver au même résultat pour la cellule C1, la différence principale étant que dans une cellule tu auras le résultat final alors que dans l’autre tu as une formule.
Dans ton autre fichier, j’ai utilisé des formules, mais tout à la fin, je les remplace par la valeur finale, donc tu ne peux pas voir les formules elles-mêmes dans les cellules.
Si tu désires voir ces formules, place un point d’arrêt dans la macro juste avant que les formules soient remplacées par les valeurs qu’elles génèrent un tu pourras consulter les formules dans la feuille Excel à la manière traditionnelle et non pas à la manière R1C1 comme dans la macro.
Pas très clair tout ça ?? Désolé, mais je ne suis pas très doué pour de telles explications. Si jamais, insiste
Si tu considères ton post comme résolu, indique le en cliquant le petit V vert dans l'un de tes messages.
Cordialement.