Partager via

Code VBA très très complexe

Anonyme
2024-04-15T16:49:51+00:00

Bonjour à tous,

J'ai une demande très complexe à vous demander.

Je souhaite avoir un code VBA qui recherche une correspondance de nombre, je m'explique:

J'ai un fichier qui s'appel "CODE POUR VBA"
Dans ce fichier j'ai 10 tableaux voir image ci-dessous:

Ensuite, j'ai d'autres fichiers qui se trouve dans un dossier que je vais appeler "DOSSIER DE DESTINATION".
Les fichiers sont de mises en formes identiques voir image ci-dessous (les fichier s'appel classeur1, classeur2, classeur3 etc...)

J'aimerais que le code VBA me trouve une correspondance pour les nombres qui se trouve dans mes tableaux avec les colonnes qui sont dans mon dossier DESTINATION et que chaque recherche commence par la colonne B.
exemple:
Dans mon dossier DESTINATION, les fichiers ont beaucoup de colonnes, chaque colonne contient beaucoup de lignes, Ligne 21 a 30 mais je vais vous faire mes explications jusqu'à la ligne 24 et se sera pareil pour les lignes à suivre.

J'aimerais trouver les correspondances du premier tableau, et j'aimerais la trouver dans la ligne 21 de mon dossier
Ensuite, trouver les correspondances du deuxième tableau, dans la ligne 22

Ensuite, trouver les correspondances du troisième tableau, dans la ligne 23
Ensuite, trouver les correspondances du quatrième tableau, dans la ligne 24

Et lorsque la colonne a été trouvée, il ne doit plus chercher le nombre de la colonne qu'il a trouvé mais les autres colonnes, donc à ce moment il ne restera que 4 colonnes à trouver.

Exemple:
Dans une feuille de un de mes fichier excel j'ai une colonne avec ses nombres:

ligne 21 : 3

ligne 22 : 26

ligne 23 : 13

ligne 24 : 3

Chaque nombre est dans les colonnes de mes 4 premiers tableaux (pour cette exemple mais faudra le faire pour les 10 tableaux) donc, le code doit mettre dans un nouveau fichier la colonne entière de ce qu'il a trouvé.

Ensuite, il fait la même recherche dans mes fichiers mais on exclu:

  • la 1ere colonne du premier tableau car le 3 a été trouvé cela veut dire qu'on a plus besoin de cette colonne c'est à dire que le script va exclure les numéros qui se trouve dans la colonne ou il y a un 3: il exclut donc les numéros 22 - 25 - 3
  • la 3ème colonne du deuxième tableau car le 26 a été trouvé cela veut dire qu'on a plus besoin de cette colonne c'est à dire que le script va exclure les numéros qui se trouve dans la colonne ou il y a un 26: il exclut les numéros 19 - 26 - 4
  • la 2ème colonne du troisième tableau car le 13 a été trouvé cela veut dire qu'on a plus besoin de cette colonne c'est à dire que le script va exclure les numéros qui se trouve dans la colonne ou il y a un 13: il exclut les numéros 14 - 39 - 13
  • la 5ème colonne du quatrième tableau car le 3 a été trouvé cela veut dire qu'on a plus besoin de cette colonne c'est à dire que le script va exclure les numéros qui se trouve dans la colonne ou il y a un 3: il exclut les numéros 3 - 52 - 25

Donc il va rechercher:

  • Un nombre dans les colonnes 2, 3, 4, 5 pour le 1er tableau c'est à dire 17 - 30 - 8 - 14 - 33 - 11 - 11 - 36 - 14 - 7 - 40 - 18
  • Un nombre dans les colonnes 1, 2, 4, 5 pour le 2ème tableau c'est à dire 21 - 23 - 2 - 20 - 25 - 3 - 7 - 40 - 16 - 1 - 63 - 22
  • Un nombre dans les colonnes 1, 3, 4, 5 pour le 3ème tableau c'est à dire 21 - 32 - 6 - 9 - 44 - 18 - 8 - 45 - 19 - 6 - 47 - 21
  • Un nombre dans les colonnes 1, 2, 3, 4 pour le 4ème tableau c'est à dire 27 - 16 - 1 - 17 - 30 - 11 - 15 - 32 - 13 - 12 - 35 - 16

Et ainsi de suite.

Dans la logique il faudrait que le fichier final n'est que 5 colonnes.

Il faut savoir:

  • qu'il n'y a pas d'ordre de recherche dans les tableaux.
  • que si les nombres exact ne sont pas trouvés dans tous les fichiers, alors le script doit recherché la colonne qui se rapproche le plus du bon nombre dans la colonne et mettre en rouge le nombre qui n'est pas dans le tableau. Exemple:

Le script a trouvé 4 colonnes avec les bon numéros:
Première colonne trouvé:

ligne 21 : 3

ligne 22 : 26

ligne 23 : 13

ligne 24 : 3

Deuxième colonne trouvé:

ligne 21 : 7

ligne 22 : 7

ligne 23 : 9

ligne 24 : 1

Troisième colonne trouvé:

ligne 21 : 17

ligne 22 : 21

ligne 23 : 6

ligne 24 : 15

Quatrième colonne:

ligne 21 : 36

ligne 22 : 25

ligne 23 : 45

ligne 24 : 30

Pour trouver la cinquième colonne, si tous les numéros ne correspondent pas au tableau il extrait la colonne qui y ressemble le plus exemple:

ligne 21 : 33

ligne 22 : 22

ligne 23 : 32

ligne 24 : 1

Le 1 ne correspond pas à un des numéros restant dans le 4ème tableau, donc il est mis en rouge dans le nouveau fichier, mais il y a 3 numéro des tableau sur 4 qui ont été trouvé donc c'est celui qui se rapproche le plus.

C'est pour ça qu'il ne faut trouver que 5 colonnes c'est très important, c'est beaucoup de recherche mais c'est très important qu'il ne faut que 5 colonnes pour le résultat final.

Le nouveau fichier doit être créé au moment du lancement du code, et il doit être ouvert pour que ce soit moi qui l'enregistre dans le bon dossier.

Et dernière petite chose, ce sont de gros fichiers, donc si le code pouvez s'exécuter le plus rapidement possible ce serait le top.

J'espère que vous avez pu comprendre ce que je demande, n'hésitez pas à me poser des questions pour plus de renseignement.

C'est quelque chose de complexe je sais mais c'est pour mon travail, je vous remercie pour l'aide que vous allez m'apporter 

***moved from Microsoft 365 and Office / Other / Unknown / Out of reach***

Microsoft 365 et Office | Installer, entrer des clés, activer | Autres | Autres

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

1 réponse

  1. Anonyme
    2024-04-15T20:46:57+00:00

    Cette réponse a été automatiquement traduite. Par conséquent, il peut y avoir des erreurs grammaticales ou des formulations étranges.

    Bonjour Linda Aaa,

    Bienvenue dans la communauté Microsoft. 

    Nous comprenons le problème que vous rencontrez. Malheureusement,  VBA n’est pas pris en charge sur le forum Microsoft Answers. Il est plus adapté à la publication sur Stack Overflow  (en anglais uniquement).Publiez des questions de programmation VBA sur Stack Overflow (en anglais uniquement) en utilisant la   balise vba , ainsi que toute autre balise pertinente.Veuillez noter que Stack Overflow a des directives telles que l’exigence d’un titre descriptif, d’un énoncé de problème complet et concis et de suffisamment de détails pour reproduire votre problème. Les demandes de fonctionnalités ou les questions trop générales sont considérées comme hors sujet.Clause de non-responsabilité : Microsoft ne fournit aucune assurance et/ou garantie, implicite ou autre, et n’est pas responsable des informations que vous recevez des sites tiers liés ou de toute assistance liée à la technologie.J’espère sincèrement que votre question sera traitée de manière appropriée après avoir contacté le bon service. Merci de votre compréhension !

    Sinceres salutations

    Isabella -MSFT |Spécialiste du support communautaire Microsoft

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire